Tôi cảm thấy có vẻ như câu trả lời chính vẫn chưa rõ ràng lắm, và đáng để dành thời gian để hiểu thời gian và múi giờ .
Điều quan trọng nhất cần hiểu khi đối phó với thời gian là thời gian là tương đối !
2017-08-30 13:23:00
: (một ngày giờ ngây thơ), đại diện cho giờ địa phương ở một nơi nào đó trên thế giới, nhưng lưu ý rằng 2017-08-30 13:23:00
ở London KHÔNG PHẢI LÀ GIỜ CÙNG như 2017-08-30 13:23:00
ở San Francisco.
Bởi vì cùng một chuỗi thời gian có thể được hiểu là các thời điểm khác nhau tùy thuộc vào vị trí của bạn trên thế giới, nên cần có một khái niệm tuyệt đối về thời gian.
Một UTC timestamp là một con số trong vài giây (hoặc mili giây) từ Epoch (được định nghĩa như 1 January 1970 00:00:00
ở GMT
múi giờ 00: 00 bù đắp).
Epoch được cố định trên múi giờ GMT và do đó là một thời điểm tuyệt đối. Do đó, một dấu thời gian UTC là một độ lệch so với thời gian tuyệt đối xác định một thời điểm tuyệt đối .
Điều này giúp bạn có thể sắp xếp các sự kiện trong thời gian.
Nếu không có thông tin múi giờ, thời gian là tương đối và không thể được chuyển đổi thành khái niệm thời gian tuyệt đối mà không cung cấp một số dấu hiệu về múi giờ mà ngày giờ ngây thơ nên được cố định.
Các loại thời gian được sử dụng trong hệ thống máy tính là gì?
datetime ngây thơ : thường để hiển thị, theo giờ địa phương (tức là trong trình duyệt) nơi hệ điều hành có thể cung cấp thông tin múi giờ cho chương trình.
Dấu thời gian UTC : Dấu thời gian UTC là một điểm thời gian tuyệt đối, như đã đề cập ở trên, nhưng nó được cố định trong một múi giờ nhất định, do đó, dấu thời gian UTC có thể được chuyển đổi thành ngày giờ trong bất kỳ múi giờ nào , tuy nhiên nó không chứa thông tin múi giờ. Điều đó nghĩa là gì? Điều đó có nghĩa là 1504119325 tương ứng với 2017-08-30T18:55:24Z
, 2017-08-30T17:55:24-0100
hoặc cũng có thể 2017-08-30T10:55:24-0800
. Nó không cho bạn biết nơi datetime ghi là từ. Nó thường được sử dụng ở phía máy chủ để ghi lại các sự kiện (nhật ký, v.v.) hoặc được sử dụng để chuyển đổi ngày giờ nhận biết múi giờ thành một thời điểm tuyệt đối trong thời gian và tính toán chênh lệch thời gian .
Chuỗi ngày giờ ISO-8601 : ISO-8601 là định dạng chuẩn hóa để ghi lại ngày giờ với múi giờ. (Trên thực tế, đó là một số định dạng, đọc tại đây: https://en.wikipedia.org/wiki/ISO_8601 ) Nó được sử dụng để giao tiếp thông tin ngày giờ nhận biết múi giờ theo cách có thể tuần tự hóa giữa các hệ thống.
Khi nào sử dụng cái nào? hay đúng hơn là khi nào bạn cần quan tâm đến múi giờ?
Nếu bạn cần bất kỳ cách nào để quan tâm đến thời gian trong ngày , bạn cần thông tin múi giờ. Lịch hoặc báo thức cần có thời gian trong ngày để đặt cuộc họp vào đúng thời điểm trong ngày cho bất kỳ người dùng nào trên thế giới. Nếu dữ liệu này được lưu trên một máy chủ, máy chủ cần biết múi giờ tương ứng với múi giờ.
Để tính toán sự khác biệt về thời gian giữa các sự kiện đến từ những nơi khác nhau trên thế giới, dấu thời gian UTC là đủ, nhưng bạn mất khả năng phân tích các sự kiện xảy ra vào thời gian nào trong ngày (tức là đối với phân tích trang web, bạn có thể muốn biết khi nào người dùng đến với trang web theo giờ địa phương của họ : bạn có thấy nhiều người dùng vào buổi sáng hoặc buổi tối bạn không thể tìm thấy ra không có thời gian thông tin ngày.
Chênh lệch múi giờ trong chuỗi ngày :
Một điểm quan trọng khác là độ lệch múi giờ trong chuỗi ngày không cố định . Điều đó có nghĩa là bởi vì 2017-08-30T10:55:24-0800
nói rằng bù đắp -0800
hoặc 8 giờ trở lại, không có nghĩa là nó sẽ luôn như vậy!
Vào mùa hè, nó có thể là thời gian tiết kiệm ánh sáng ban ngày, và nó sẽ -0700
Điều đó có nghĩa là độ lệch múi giờ (+0100) không giống với tên múi giờ (Châu Âu / Pháp) hoặc thậm chí là chỉ định múi giờ (CET)
America/Los_Angeles
múi giờ là một địa điểm trên thế giới , nhưng nó chuyển thành PST
ký hiệu bù múi giờ (Giờ chuẩn Thái Bình Dương) vào mùa đông và PDT
(Giờ ban ngày Thái Bình Dương) vào mùa hè.
Vì vậy, ngoài việc lấy lệch múi giờ từ chuỗi dữ liệu, bạn cũng nên lấy tên múi giờ cho chính xác.
Hầu hết các gói sẽ có thể tự mình chuyển đổi các hiệu số từ thời gian tiết kiệm ánh sáng ban ngày sang thời gian tiêu chuẩn, nhưng điều đó không nhất thiết là nhỏ với chỉ bù đắp. Ví dụ: WAT
chỉ định múi giờ ở Tây Phi, UTC + 0100 giống như CET
múi giờ ở Pháp, nhưng Pháp quan sát thời gian tiết kiệm ánh sáng ban ngày, trong khi Tây Phi thì không (vì chúng gần đường xích đạo)
Vì vậy, trong ngắn hạn, nó phức tạp. RẤT phức tạp, và đó là lý do tại sao bạn không nên tự mình làm điều này, nhưng hãy tin tưởng một gói làm điều đó cho bạn và GIỮ LẠI CHO ĐẾN NGÀY!
then.strftime('%s')
dự kiến giờ địa phương nhưng dấu thời gian cho biết đódatetime(2008, 1, 1)
là giờ UTC.