Mengapa 1/1/1970 adalah "zaman"?


456

Kenapa

1 Januari 1970 00:00:00

dianggap sebagai zamannya ?


21
Tidak yakin mengapa ada yang berpikir ini subjektif. Waktu 'Epoch' adalah skema waktu-stamping standar.
ConcernedOfTunbridgeWells

5
Hari ini 380.000 jam yang lalu
mplungjan

21
Kita harus mulai menghitung waktu sejak tanggal ini, jadi kita sekarang di tahun 44.
Leonardo Raele

3
Hari ini, sekarang, ini adalah 1499969999! Itu hanya sekitar. 8 jam lagi!
Dr Beco

1
@LeonardoRaele Ya! maka misalnya, Perang Dunia II dimulai pada tahun 31 BE!
Siavash Mortazavi

Jawaban:


418

Versi awal unix mengukur waktu sistem dalam interval 1/60 dtk. Ini berarti bahwa integer 32-bit unsigned hanya dapat mewakili rentang waktu kurang dari 829 hari. Untuk alasan ini, waktu yang diwakili oleh angka 0(disebut zaman ) harus ditetapkan di masa lalu. Karena ini pada awal 1970-an, zaman ditetapkan untuk 1971-1-1.

Kemudian, waktu sistem diubah menjadi kenaikan setiap detik, yang meningkatkan rentang waktu yang dapat diwakili oleh integer 32-bit unsigned menjadi sekitar 136 tahun. Karena tidak lagi begitu penting untuk memeras setiap detik dari meja, zaman itu dibulatkan ke dekade terdekat, sehingga menjadi 1970-1-1. Orang harus berasumsi bahwa ini dianggap sedikit lebih rapi daripada 1971-1-1.

Perhatikan bahwa integer bertanda 32-bit menggunakan 1970-1-1 sebagai zamannya dapat mewakili tanggal hingga 2038-1-19 , pada tanggal mana ia akan membungkus sekitar 1901-12-13.


30
Apakah 1/60 ada hubungannya dengan frekuensi jaringan listrik Amerika?
xtofl

55
Frekuensi salah satu osilator pada papan sistem yang digunakan saat itu. Osilator tidak perlu menjadi 60Hz sejak dijalankan pada DC, tetapi mungkin murah untuk menggunakan apa pun yang paling umum saat itu, dan TV diproduksi secara massal saat itu ...
Matt Howells

18
Sebenarnya, pada saat itu, sangat umum untuk jam komputer dan juga RTC disinkronkan dengan bentuk gelombang utama AS karena sangat handal. Itu dikalikan untuk mendapatkan jam prosesor, dan dibagi untuk mendapatkan detik untuk RTC.
Alexios

12
@ mafioso: Benar, saya akan menetapkan pengingat pada laptop saya untuk 2038 -... 1901-12-13.

18
@JediKnight Ini adalah spekulasi berdasarkan pengalaman saya sendiri sebagai pengembang: mengubah standar membutuhkan waktu, dan jika perubahan Anda tidak bertahan maka Anda berakhir dengan standar yang bersaing . Solusi nyata untuk masalah zaman adalah bilangan bulat 64-bit, bukan menggerakkan zaman ke depan dalam waktu.
Jake

51

Sejarah .

Versi awal waktu Unix memiliki bilangan bulat 32-bit pada kecepatan 60 Hz, yang merupakan laju jam sistem pada perangkat keras sistem Unix awal. Nilai 60 Hz masih muncul di beberapa antarmuka perangkat lunak sebagai hasilnya. Zaman juga berbeda dari nilai saat ini. Edisi pertama Manual Programmer Unix tanggal 3 November 1971 mendefinisikan waktu Unix sebagai "waktu sejak 00:00:00, 1 Januari 1971, diukur dalam enam puluh detik per detik".


1
Waktu Epoch adalah 1 Januari 1970, bukan 1 Januari 1971.
Steve Harrison

10

http://en.wikipedia.org/wiki/Unix_time#History menjelaskan sedikit tentang asal-usul waktu Unix dan zaman yang dipilih. Definisi waktu unix dan tanggal zaman mengalami beberapa perubahan sebelum menstabilkan apa yang sekarang.

Tetapi tidak disebutkan mengapa tepatnya 1/1/1970 dipilih pada akhirnya.

Kutipan penting dari halaman Wikipedia:

The edisi pertama Pedoman tanggal November 3, 1971 mendefinisikan waktu Unix Unix Programmer sebagai "waktu sejak 00:00:00, 1 Jan., tahun 1971 , diukur dalam sixtieths detik".

Karena rentang terbatas, zaman itu didefinisikan ulang lebih dari sekali , sebelum laju diubah menjadi 1 Hz dan zaman ditetapkan ke nilai sekarang.

Beberapa masalah kemudian, termasuk kompleksitas definisi saat ini, hasil dari waktu Unix yang telah ditentukan secara bertahap oleh penggunaan daripada sepenuhnya didefinisikan untuk memulai.


6

Tanggal referensi zaman

Sebuah tanggal referensi zaman adalah titik pada timeline dari mana kita menghitung waktu. Momen sebelum titik itu dihitung dengan angka negatif, beberapa saat setelahnya dihitung dengan angka positif.

Banyak zaman yang digunakan

Mengapa 1 Januari 1970 00:00:00 dianggap sebagai masa jaman?

Tidak, tidak pada zaman, suatu zaman. Ada banyak zaman yang digunakan .

Pilihan zaman ini adalah arbitrer .

Sistem komputer utama dan perpustakaan menggunakan setidaknya beberapa lusin zaman yang berbeda . Salah satu zaman paling populer umumnya dikenal sebagai Waktu Unix , menggunakan momen UTC 1970 yang Anda sebutkan.

Meskipun populer, Unix Time's 1970 mungkin bukan yang paling umum. Juga sedang berjalan untuk yang paling umum adalah 0 Januari 1900 untuk spreadsheet Microsoft Excel & Lotus 1-2-3 yang tak terhitung jumlahnya, atau 1 Januari 2001 yang digunakan oleh kerangka kerja Kakao Apple di lebih dari satu miliar mesin iOS / macOS di seluruh dunia dalam aplikasi yang tak terhitung jumlahnya. Atau mungkin 6 Januari 1980 digunakan oleh perangkat GPS ?

Banyak granularities

Sistem yang berbeda menggunakan rincian yang berbeda dalam menghitung waktu.

Bahkan yang disebut "Waktu Unix" bervariasi, dengan beberapa sistem menghitung detik penuh dan beberapa milidetik penghitungan . Banyak basis data seperti Postgres menggunakan mikrodetik . Beberapa, seperti kerangka java.time modern di Java 8 dan yang lebih baru, menggunakan nanodetik . Beberapa masih menggunakan granularities lainnya.

ISO 8601

Karena ada begitu banyak perbedaan dalam penggunaan referensi zaman dan dalam granularities, umumnya terbaik untuk menghindari berkomunikasi saat sebagai hitungan-dari-zaman. Antara ambiguitas zaman & granularitas, ditambah ketidakmampuan manusia untuk memahami nilai-nilai yang bermakna (dan karenanya kehilangan nilai-nilai kereta), gunakan teks biasa alih-alih angka.

Standar ISO 8601 menyediakan serangkaian luas format praktis yang dirancang dengan baik untuk mengekspresikan nilai waktu-tanggal sebagai teks. Format ini mudah diurai oleh mesin serta mudah dibaca oleh manusia lintas budaya.

Ini termasuk:


-10

Jawaban singkat: Kenapa tidak?

Jawaban yang lebih panjang: Waktu itu sendiri tidak terlalu penting, selama semua orang yang menggunakannya setuju dengan nilainya. Karena 1/1/70 telah digunakan sejak lama, menggunakannya akan membuat kode Anda dapat dimengerti oleh sebanyak mungkin orang.

Tidak ada manfaat besar dalam memilih zaman yang sewenang-wenang hanya untuk berbeda.


37
Karena Unix dikembangkan pada tahun 1969 dan dirilis pertama kali pada tahun 1971 dan dengan demikian masuk akal untuk mengasumsikan bahwa tidak ada mesin yang harus mewakili waktu sistem lebih awal dari 1970-01-01-00: 00: 00.
Jörg W Mittag

3
Sebagai pengembang game simulasi historis, tampaknya cukup konyol bahwa perancang beberapa objek waktu cenderung menganggap semua program hanya ingin mewakili tanggal di masa depan atau masa lalu. Tentu saja, kita dapat memprogram representasi kita sendiri, atau bekerja dalam faktor penyesuaian, tetapi tetap saja.
Dronz

8
Masalah pra-zaman yang sama berlaku untuk penggunaan non-game "praktis", seperti spreadsheet bisnis, presentasi data ilmiah, UI mesin waktu, dll.
Lenoxus

7
@Dronz Anda harus mempertimbangkan ini dirancang untuk komputer $ 72000 dengan 9KB RAM yang menggunakan transistor dan dioda untuk gerbang logika sebagai CPU (tidak ada chip pada saat itu!). Jadi bukan "konyol" untuk membuat hal paling mendasar yang berhasil.
Camilo Martin

2
OP benar pada tingkat meta, skema yang kami kerjakan untuk waktu selalu cukup sewenang-wenang. Jumlah hari dalam setahun, jumlah hari dalam bulan, tahun "0", dan aturan untuk tahun kabisat adalah ... gila. Setiap sistem hanyalah serangkaian kompromi jelek yang dibuat karena itu adalah yang terbaik yang bisa mereka lakukan dengan teknologi yang tersedia dan bekerja cukup baik untuk kasus penggunaan langsung mereka. Yang benar dari semua proyek rekayasa
:)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.