Apakah ada alasan dibalik penggunaan tanggal (1 Januari 1970) sebagai standar default untuk manipulasi waktu? Saya telah melihat standar ini di Java dan juga di Python. Kedua bahasa ini saya pahami. Apakah ada bahasa populer lainnya yang mengikuti standar yang sama?
Tolong jelaskan.
java
python
programming-languages
Vijay Shanker Dubey
sumber
sumber
Jawaban:
Ini adalah standar waktu Unix.
sumber
Pertanyaan tersebut membuat dua asumsi yang salah:
Dua Lusin Zaman
Waktu dalam komputasi tidak selalu dilacak sejak awal 1970 UTC . Sementara referensi zaman itu populer, berbagai lingkungan komputasi selama beberapa dekade telah menggunakan setidaknya hampir dua lusin zaman . Beberapa berasal dari abad lain. Mereka berkisar dari tahun 0 (nol) hingga 2001.
Berikut ini beberapa.
Unix Epoch Umum, Tapi Tidak Dominan
Awal tahun 1970 sangat populer, mungkin karena penggunaannya oleh Unix. Tapi sama sekali tidak begitu dominan. Sebagai contoh:
January 0, 1900
(31 Desember 1899).1 January 2001, GMT
.January 6, 1980
sedangkan alternatif Eropa Galileo penggunaan22 August 1999
.ISO 8601
Mengasumsikan hitungan-sejak-zaman menggunakan zaman Unix membuka kerentanan besar bagi bug. Jumlah seperti itu tidak mungkin diuraikan secara instan oleh manusia, sehingga kesalahan atau masalah tidak akan mudah ditandai saat melakukan debug dan logging. Masalah lainnya adalah ambiguitas perincian yang dijelaskan di bawah ini.
Saya sangat menyarankan alih-alih membuat serialisasi nilai tanggal-waktu sebagai string ISO 8601 yang tidak ambigu untuk pertukaran data daripada hitungan integer sejak zaman:
YYYY-MM-DDTHH:MM:SS.SSSZ
seperti2014-10-14T16:32:41.018Z
.Hitungan Apa Sejak Epoch
Masalah lain dengan pelacakan waktu hitungan-sejak-periode adalah unit waktu, dengan setidaknya empat tingkat resolusi yang biasa digunakan.
Fasilitas Unix asli menggunakan seluruh detik, yang mengarah ke Masalah Tahun 2038 ketika kita mencapai batas detik sejak 1970 jika disimpan sebagai bilangan bulat 32-bit.
Digunakan oleh pustaka Java lama, termasuk kelas java.util.Date yang dibundel dan pustaka Joda-Time .
Digunakan oleh database seperti Postgres .
Digunakan oleh paket java.time baru di Java 8.
sumber
mengapa selalu 1 januari 1970, Karena - '1 Januari 1970' biasanya disebut sebagai "tanggal waktu" adalah tanggal ketika waktu dimulai untuk komputer Unix, dan stempel waktu itu ditandai sebagai '0'. Kapan pun sejak tanggal tersebut dihitung berdasarkan jumlah detik yang telah berlalu. Sederhananya ... stempel waktu pada tanggal mana pun akan berbeda dalam hitungan detik antara tanggal itu dan '1st Januari 1970' Stempel waktu hanyalah bilangan bulat yang dimulai dari angka '0' pada 'Midnight 1st January 1970' dan terus bertambah dengan '1' sebagai setiap detik berlalu Untuk konversi stempel waktu UNIX ke tanggal yang dapat dibaca PHP dan bahasa sumber terbuka lainnya menyediakan fungsi bawaan.
sumber
Tidak ada alasan yang penting.
time
Modul Python adalah pustaka C. Tanyakan Ken Thompson mengapa dia memilih tanggal itu untuk tanggal penting. Mungkin itu hari ulang tahun seseorang.Excel menggunakan dua zaman yang berbeda. Adakah alasan mengapa versi excel yang berbeda menggunakan tanggal yang berbeda?
Kecuali programmer sebenarnya, tidak ada orang lain yang akan tahu mengapa keputusan semacam itu dibuat.
Dan...
Tidak masalah mengapa tanggal itu dipilih. Itu baru saja.
Para astronom menggunakan tanggal epochal mereka sendiri: http://en.wikipedia.org/wiki/Epoch_(astronomy)
Mengapa? Tanggal harus dipilih agar matematika berhasil. Tanggal acak apa pun bisa digunakan.
Tanggal yang jauh di masa lalu menghindari angka negatif untuk kasus umum.
Beberapa paket yang lebih cerdas menggunakan proleptic Gregorian year 1. Ada alasan mengapa tahun 1?
Ada alasan yang diberikan dalam buku-buku seperti Kalkulasi Kalender: secara matematis sedikit lebih sederhana.
Tetapi jika Anda memikirkannya, perbedaan antara 1/1/1 dan 1/1/1970 hanyalah 1969, offset matematis yang sepele.
sumber
1 Januari 1970 00:00:00 adalah titik nol waktu POSIX .
sumber
T) "Mengapa tanggal dihitung dari 1 Januari 1970?"
A) Itu harus sesingkat mungkin, namun menyertakan beberapa masa lalu. Kemungkinan besar tidak ada alasan lain yang signifikan karena banyak orang merasakan hal yang sama.
Mereka tahu itu menimbulkan masalah jika mereka menempatkannya terlalu jauh ke masa lalu dan mereka tahu itu memberi hasil negatif jika itu terjadi di masa depan. Tidak perlu mendalami masa lalu karena peristiwa kemungkinan besar akan terjadi di masa depan.
Catatan: Suku Maya, di sisi lain, memiliki kebutuhan untuk menempatkan peristiwa ke masa lalu, karena mereka memiliki banyak pengetahuan tentang masa lalu, yang karenanya mereka membuat kalender jangka panjang. Hanya untuk menempatkan semua fenomena rutin di kalender.
Stempel waktu tidak dimaksudkan sebagai kalender, ini adalah Epoch. Dan saya yakin suku Maya membuat kalender jangka panjang mereka menggunakan perspektif yang sama. (artinya mereka tahu betul bahwa mereka tidak memiliki hubungan dengan masa lalu, mereka hanya memiliki kebutuhan untuk melihatnya dalam skala yang lebih besar)
sumber
Ya, C (dan keluarganya). Di sinilah Java mengambilnya juga.
sumber