Tại sao 1/1/1970 là thời gian epoch thời gian?


455

Tại sao lại là

Ngày 1 tháng 1 năm 1970 00:00:00

coi thời đại nào?


21
Không chắc chắn tại sao bất cứ ai nghĩ rằng điều này là chủ quan. "Thời gian của thời đại" là một chương trình dập thời gian tiêu chuẩn.
Mối quan tâmOfTunbridgeWells

5
Hôm nay là 380.000 giờ trước
mplungjan

21
Chúng ta nên bắt đầu đếm thời gian kể từ ngày này, vì vậy chúng ta đang ở tuổi 44.
Leonardo Raele

3
Hôm nay, ngay bây giờ, nó là 1499969999! Nó chỉ xấp xỉ. 8 giờ để đi!
Bác sĩ Beco

1
@LeonardoRaele Vâng! sau đó, ví dụ, Thế chiến II bắt đầu vào năm 31 BE!
Siavash Mortazavi

Câu trả lời:


417

Các phiên bản đầu tiên của unix đo thời gian hệ thống trong các khoảng thời gian 1/60 giây. Điều này có nghĩa là số nguyên không dấu 32 bit chỉ có thể biểu thị một khoảng thời gian dưới 829 ngày. Vì lý do này, thời gian được biểu thị bằng số 0(được gọi là kỷ nguyên ) phải được đặt trong quá khứ gần đây. Vì đây là vào đầu những năm 1970, kỷ nguyên được đặt thành 1971-1-1.

Sau đó, thời gian hệ thống được thay đổi thành tăng dần mỗi giây, làm tăng khoảng thời gian có thể được biểu thị bằng số nguyên không dấu 32 bit lên khoảng 136 năm. Vì nó không còn quá quan trọng để vắt kiệt từng giây ra khỏi quầy, kỷ nguyên đã được làm tròn xuống đến thập kỷ gần nhất, do đó trở thành 1970-1-1. Người ta phải cho rằng điều này được coi là gọn gàng hơn 1971-1-1.

Lưu ý rằng một số nguyên có chữ ký 32 bit sử dụng 1970-1-1 vì kỷ nguyên của nó có thể biểu thị các ngày lên tới 2038-1-19 , vào ngày mà nó sẽ kéo dài đến 1901-12-13.


30
1/60 có liên quan gì đến tần số của mạng lưới điện Mỹ không?
xtofl

55
Đó là tần số của một trong các bộ dao động trên bo mạch hệ thống được sử dụng tại thời điểm đó. Không cần thiết cho bộ tạo dao động là 60Hz kể từ khi nó chạy trên DC, nhưng có lẽ nó rẻ khi sử dụng bất cứ thứ gì phổ biến nhất vào thời điểm đó và TV đang được sản xuất hàng loạt sau đó ...
Matt Howells

18
Trên thực tế, vào thời điểm đó, việc đồng hồ máy tính cũng như RTC được đồng bộ hóa với dạng sóng chính của Hoa Kỳ là rất phổ biến vì nó rất đáng tin cậy. Nó được nhân lên để có được đồng hồ bộ xử lý và được chia để có giây cho RTC.
Alexios

12
@mafioso: Phải, tôi sẽ đặt lời nhắc trên máy tính xách tay của mình cho năm 2038 -... 1901-12-13.

18
@JediKnight Đây là suy đoán dựa trên kinh nghiệm của chính tôi khi là nhà phát triển: thay đổi một tiêu chuẩn cần có thời gian và nếu thay đổi của bạn không được thực hiện thì bạn sẽ kết thúc với các tiêu chuẩn cạnh tranh . Giải pháp thực sự cho vấn đề kỷ nguyên là số nguyên 64 bit, không di chuyển thời gian về phía trước theo thời gian.
Jake

51

Lịch sử .

Các phiên bản đầu tiên của thời gian Unix có số nguyên tăng 32 bit với tốc độ 60 Hz, là tốc độ của đồng hồ hệ thống trên phần cứng của các hệ thống Unix đầu tiên. Kết quả là giá trị 60 Hz vẫn xuất hiện trong một số giao diện phần mềm. Kỷ nguyên cũng khác với giá trị hiện tại. Phiên bản đầu tiên Hướng dẫn lập trình viên Unix ngày 3 tháng 11 năm 1971 định nghĩa thời gian Unix là "thời gian kể từ 00:00:00, ngày 1 tháng 1 năm 1971, được đo bằng sáu mươi giây".


1
Thời gian kỷ nguyên là ngày 1 tháng 1 năm 1970, không phải ngày 1 tháng 1 năm 1971.
Steve Harrison

10

http://en.wikipedia.org/wiki/Unix_time#History giải thích một chút về nguồn gốc của thời gian Unix và kỷ nguyên được chọn. Định nghĩa về thời gian unix và ngày kỷ nguyên đã trải qua một vài thay đổi trước khi ổn định với hiện tại.

Nhưng nó không nói lý do tại sao chính xác 1/1/1970 được chọn cuối cùng.

Đoạn trích đáng chú ý từ trang Wikipedia:

Các ấn bản đầu tiên tay đề ngày 3 tháng 11 1971 định nghĩa thời gian Unix Unix Programmer là "thời gian từ 00:00:00, 1 Jan., năm 1971 , được đo bằng sixtieths của một giây".

Do [phạm vi] giới hạn, kỷ nguyên được xác định lại nhiều lần , trước khi tốc độ được thay đổi thành 1 Hz và kỷ nguyên được đặt thành giá trị hiện tại.

Một số vấn đề sau này, bao gồm cả sự phức tạp của định nghĩa hiện tại, xuất phát từ thời gian Unix được xác định dần dần bằng cách sử dụng thay vì được xác định đầy đủ để bắt đầu.


6

Ngày tham chiếu Epoch

Một ngày tham chiếu kỷ nguyên là một điểm trên dòng thời gian mà chúng ta đếm thời gian. Khoảnh khắc trước thời điểm đó được tính bằng số âm, khoảnh khắc sau được tính bằng số dương.

Nhiều kỷ nguyên được sử dụng

Tại sao ngày 1 tháng 1 năm 1970 00:00:00 được coi là thời gian kỷ nguyên?

Không, không phải các thời đại, một kỷ nguyên. Có nhiều kỷ nguyên được sử dụng .

Sự lựa chọn này của thời đại là tùy ý .

Các hệ thống máy tính và thư viện lớn sử dụng bất kỳ ít nhất vài chục kỷ nguyên khác nhau . Một trong những kỷ nguyên phổ biến nhất thường được gọi là Thời gian Unix , sử dụng thời điểm UTC 1970 mà bạn đề cập.

Mặc dù phổ biến, Unix Time 1970 có thể không phải là phổ biến nhất . Ngoài ra, hoạt động phổ biến nhất sẽ là ngày 0 tháng 1 năm 1900 cho vô số bảng tính Microsoft Excel & Lotus 1-2-3 hoặc ngày 1 tháng 1 năm 2001 được sử dụng bởi khung Cacao của Apple trong hơn một tỷ máy iOS / macOS trên toàn thế giới trong vô số ứng dụng. Hoặc có lẽ ngày 6 tháng 1 năm 1980 được sử dụng bởi các thiết bị GPS ?

Nhiều chi tiết

Các hệ thống khác nhau sử dụng độ chi tiết khác nhau trong thời gian đếm.

Ngay cả cái gọi là Thời gian Unix Unix cũng khác nhau, với một số hệ thống đếm cả giây và một số tính bằng mili giây . Nhiều cơ sở dữ liệu như Postgres sử dụng micro giây . Một số, chẳng hạn như khung java.time hiện đại trong Java 8 trở lên, sử dụng nano giây . Một số sử dụng vẫn còn chi tiết khác.

ISO 8601

Bởi vì có quá nhiều sự khác biệt trong việc sử dụng một tham chiếu kỷ nguyên và trong các mức độ chi tiết, nói chung, tốt nhất là tránh giao tiếp những khoảnh khắc như một đếm từ thời đại. Giữa sự mơ hồ của kỷ nguyên & độ chi tiết, cộng với việc con người không có khả năng nhận thức các giá trị có ý nghĩa (và do đó bỏ lỡ các giá trị lỗi), hãy sử dụng văn bản đơn giản thay vì số.

Các tiêu chuẩn ISO 8601 tiêu chuẩn cung cấp một bộ đầy đủ của thực tiễn các định dạng được thiết kế để thể hiện các giá trị ngày thời gian dưới dạng văn bản. Các định dạng này dễ dàng phân tích bằng máy cũng như dễ đọc bởi con người trên các nền văn hóa.

Bao gồm các:


-10

Câu trả lời ngắn gọn: Tại sao không?

Câu trả lời dài hơn: Thời gian tự nó không thực sự quan trọng, miễn là mọi người sử dụng nó đồng ý với giá trị của nó. Vì 1/1/70 đã được sử dụng quá lâu, sử dụng nó sẽ giúp bạn viết mã dễ hiểu nhất có thể cho càng nhiều người càng tốt.

Không có công lớn trong việc lựa chọn một kỷ nguyên tùy ý chỉ để khác biệt.


37
Bởi vì Unix được phát triển vào năm 1969 và được phát hành lần đầu tiên vào năm 1971 và do đó thật hợp lý khi cho rằng không có máy nào phải đại diện cho thời gian hệ thống sớm hơn 1970-01-01-00: 00: 00.
Jörg W Mittag

3
Là một nhà phát triển trò chơi mô phỏng lịch sử, có vẻ khá ngớ ngẩn khi các nhà thiết kế của một số đối tượng thời gian có xu hướng cho rằng tất cả các chương trình sẽ chỉ muốn đại diện cho ngày trong tương lai hoặc quá khứ gần đây. Tất nhiên, chúng ta có thể lập trình các đại diện của riêng mình, hoặc làm việc trong một yếu tố điều chỉnh, nhưng vẫn còn.
Dronz

8
Vấn đề tiền kỷ nguyên tương tự áp dụng cho việc sử dụng phi thực tế "thực tế", chẳng hạn như bảng tính kinh doanh, trình bày dữ liệu khoa học, giao diện người dùng cỗ máy thời gian, v.v.
Lenoxus

7
@Dronz Bạn phải tính đến điều này được thiết kế cho một máy tính trị giá 72000 đô la với 9KB RAM, sử dụng bóng bán dẫn và điốt cho các cổng logic như một CPU (không có chip tại thời điểm đó!). Vì vậy, nó không "ngớ ngẩn" để làm điều cơ bản nhất hoạt động.
Camilo Martin

2
OP là chính xác ở cấp độ meta, các kế hoạch chúng tôi thực hiện theo thời gian luôn luôn khá độc đoán. Số ngày trong một năm, số ngày trong tháng, năm "0" và quy tắc cho năm nhuận là ... điên rồ. Mọi hệ thống chỉ là một loạt các thỏa hiệp tào lao được thực hiện bởi vì đó là điều tốt nhất họ có thể làm với công nghệ có sẵn và hoạt động đủ tốt cho trường hợp sử dụng ngay lập tức của họ. Điều này đúng với tất cả các dự án kỹ thuật :)
Mất
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.