Các dấu thời gian unix thay đổi trên các múi giờ?


136

Như đối tượng yêu cầu; các dấu thời gian UNIX có thay đổi theo từng múi giờ không?

Ví dụ: nếu tôi đã gửi một yêu cầu đến một email khác ở bên kia thế giới nói rằng: "Gửi email khi thời gian là 1397484936" , liệu dấu thời gian của máy chủ kia có chậm hơn 12 giờ không?


7
Không, đó là số giây đã trôi qua kể từ một thời điểm cụ thể.
Niklas B.

Câu trả lời:


228

Định nghĩa của dấu thời gian UNIX là độc lập múi giờ. Dấu thời gian là số giây (hoặc mili giây) trôi qua kể từ thời điểm tuyệt đối, nửa đêm ngày 1 tháng 1 năm 1970 theo giờ UTC. (UTC là Giờ chuẩn Greenwich mà không cần điều chỉnh thời gian tiết kiệm ánh sáng ban ngày.) Bất kể múi giờ của bạn là gì, dấu thời gian biểu thị một khoảnh khắc giống nhau ở mọi nơi. Tất nhiên, bạn có thể chuyển đổi qua lại thành đại diện múi giờ địa phương (thời gian 1397484936 là giờ địa phương tương tự ở New York hoặc một số giờ địa phương khác ở Djakarta) nếu bạn muốn.

Bài viết tại http://en.wikipedia.org/wiki/Unix_time khá ấn tượng nếu bạn muốn đọc lâu hơn.


19
Trong cuộc sống khác của tôi, tôi là một giảng viên bay. Chúng tôi sử dụng UTC (còn được gọi là "thời gian Zulu") cho thời gian cất cánh và hạ cánh, do đó sự khác biệt giữa các lần là một phép đo chính xác về độ dài của chuyến bay, mà không phải xem xét múi giờ bắt đầu và kết thúc của sân bay Thật vậy, tôi đã thực hiện các chuyến bay bắt đầu trong thời gian tiết kiệm ánh sáng ban ngày và kết thúc sau đó, hoặc ngược lại!
RobP

19
+1 cho câu trả lời này. Để thêm một ý tưởng có thể giúp làm rõ: bản thân dấu thời gian không phải là UTC, dấu thời gian là một số (milli) giây được truyền từ thời điểm tham chiếu. Điểm tham chiếu cho dấu thời gian Unix (kỷ nguyên Unix) là điểm UTC: 00:00:00 UTC 1970.01.01
Sandman

4
Xây dựng thêm từ phản ứng của @Sandman, 1397484936 giây kể từ khi bắt đầu chỉ là 1397484936 giây. Không đi sâu vào khoa học khác, 1397484936 giây đã trôi qua tại thời điểm đó ở khắp mọi nơi trên thế giới. Khi 1397484936 giây đó trôi qua, có thể là 4 giờ chiều: 16:00 tại New York, 9 giờ tối 21:00 tại Luân Đôn, là múi
conrad10781

1
@RobP Đó không phải là sự thật. UNIX không phải là múi giờ độc lập, bạn tự nói điều đó in UTC time. Có hai độ lệch, a raw offsetDST offset. Ví dụ, America/New_Yorkoffset thô là -18000và offset DST 3600, do đó, từ bất kỳ dấu thời gian UNIX nào, bạn phải thực hiện phép toán UNIX + offset + dstOffsetđể có được dấu thời gian ở New York.
Tối đa

15

Thời gian Unix được định nghĩa là số giây đã trôi qua kể từ 00:00:00 Giờ quốc tế phối hợp ( UTC ), Thứ Năm, ngày 1 tháng 1 năm 1970. Vì vậy, câu trả lời là không


5

NẾU cả hai máy tính được thiết lập chính xác với đồng hồ được đặt cho các giá trị múi giờ và UTC chính xác, chúng sẽ trả về cùng một giá trị.
Tất nhiên đó là một IF lớn. Gần như chắc chắn có sự khác biệt ít nhất là thứ hai, thường xuyên hơn vài phút giữa thời gian được báo cáo bởi hai máy tính. Và nhiều máy tính được thiết lập để có cài đặt múi giờ không chính xác và sẽ báo cáo giờ địa phương của chúng khi được hỏi dấu thời gian thay vì UTC.

Và trong đó nằm ở sự khác biệt giữa lý thuyết và thực hành. Về lý thuyết, tất cả đều giống nhau, trong thực tế, bạn không bao giờ nên dựa vào nó.


3

Dấu thời gian Unix không thay đổi theo các múi giờ , chúng được tạo ra với mục đích có thời gian chuẩn trên toàn cầu.

LƯU Ý: - Dấu thời gian được tính toán dựa trên thời gian hiện tại trong máy tính, do đó không dựa vào chúng cho đến khi và trừ khi bạn rất chắc chắn về cài đặt thời gian trong các máy tham gia.


2

Có người tuyên bố rằng "UTC là Giờ trung bình của Greenwich mà không cần điều chỉnh thời gian tiết kiệm ánh sáng ban ngày". Điều này chỉ đơn giản là không đúng sự thật. GMT không có Giờ tiết kiệm ban ngày. GMT được đo tại Greenwich, Anh (tại Obeservical Naval) [0 kinh độ, nhưng không phải 0 độ]. UTC được đo tại xích đạo [0 kinh độ và 0 độ - điều này xảy ra khi nằm trong đại dương ngoài chi phí của Châu Phi].

Điều gì khác biệt nó làm? Nó không tạo ra sự khác biệt về "thời gian nào trong ngày?" Tuy nhiên, nó làm cho một sự khác biệt trong việc tính toán một năm. Bây giờ bạn nghĩ rằng một năm sẽ được đo dựa trên vị trí của trung tâm (lõi) của trái đất, phải không? Khi lõi trái đất quay trở lại cùng một vị trí, đó là ~ 365 ngày trước, nó đã được một năm. Nó không được đo theo cách đó. Nó được đo bằng một vị trí cụ thể trên trái đất quay trở lại cùng một vị trí (so với mặt trời) mà nó đã ~ 365 ngày trước. Nhưng khoảng thời gian một ngày và một năm không chia đều. Khi trái đất quay trở lại khoảng một năm trước, trái đất không quay về cùng hướng với năm ngoái, do đó, vị trí trên trái đất không phải đối mặt với cùng hướng với một năm trước. Ở xa hơn về phía bắc, Greenwich sẽ không quay trở lại cùng một vị trí (so với mặt trời) mà năm ngoái là cùng thời điểm 0 Lat / 0 Long. Vì vậy, nếu bạn căn cứ vào định nghĩa trên Greenwith so với 0/0, bạn sẽ nhận được một câu trả lời khác, dù hơi khác, cho câu hỏi "có bao nhiêu ngày trong một năm". Nói cách khác, khi một vị trí nhất định trên trái đất quay trở lại nơi cách đây một năm (so với Mặt trời), lõi của trái đất không ở cùng một vị trí như một năm trước, vậy điểm nào bạn chọn vấn đề vì lõi trái đất sẽ ở một vị trí khác (so với mặt trời) so với một năm trước, nếu bạn chọn một điểm khác trên trái đất. mặc dù một chút, câu trả lời khác nhau cho câu hỏi "bao nhiêu ngày trong một năm". Nói cách khác, khi một vị trí nhất định trên trái đất quay trở lại nơi cách đây một năm (so với Mặt trời), lõi của trái đất không ở cùng một vị trí như một năm trước, vậy điểm nào bạn chọn vấn đề vì lõi trái đất sẽ ở một vị trí khác (so với mặt trời) so với một năm trước, nếu bạn chọn một điểm khác trên trái đất. mặc dù một chút, câu trả lời khác nhau cho câu hỏi "bao nhiêu ngày trong một năm". Nói cách khác, khi một vị trí nhất định trên trái đất quay trở lại nơi cách đây một năm (so với Mặt trời), lõi của trái đất không ở cùng một vị trí như một năm trước, vậy điểm nào bạn chọn vấn đề vì lõi trái đất sẽ ở một vị trí khác (so với mặt trời) so với một năm trước, nếu bạn chọn một điểm khác trên trái đất.

Cả UTC và GMT đều không có thời gian tiết kiệm ánh sáng ban ngày. Giờ châu Âu / Luân Đôn, múi giờ mà Greenwich cư trú, không. Nhưng GMT thì không. GMT là, cái mà người Mỹ sẽ gọi là "Giờ chuẩn" - tức là không có DST.

Quay trở lại câu hỏi, thời gian Epoch về mặt kỹ thuật không có múi giờ. Nó dựa trên một thời điểm cụ thể, điều này rất phù hợp với thời gian UTC "chẵn" (vào đầu chính xác của một năm và một thập kỷ, v.v.). Nếu khái niệm đó không phù hợp với bộ não của bạn và nếu nó giúp nghĩ về thời gian của Epoch như ở UTC, hãy tiếp tục. Bạn đang ở trong một công ty tốt và trong một kế hoạch lớn, mọi thứ thực sự không thành vấn đề. Bạn có bao giờ thấy những bộ luật đó trong đó somoene được thưởng $ 1. Đó là loại phán quyết "bạn đúng, nhưng nó không thực sự quan trọng". Nếu ai đó kiện bạn vì cho rằng thời gian Epoch nằm trong múi giờ UTC, họ sẽ giành được $ 1. Điều đó sẽ không mua cho họ một tách cà phê tại bất kỳ Starbucks nào trong bất kỳ múi giờ nào trên hành tinh.

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.