Sự khác biệt giữa các mô đun thời gian của Python và các mô đun thời gian


136

Tôi đang cố gắng tìm ra sự khác biệt giữa datetimetimemô-đun, và những gì từng được sử dụng cho.

Tôi biết rằng datetimecung cấp cả ngày và thời gian. Việc sử dụng các timemô-đun là gì?

Các ví dụ sẽ được đánh giá cao và sự khác biệt liên quan đến múi giờ đặc biệt đáng quan tâm.

Câu trả lời:


101

các timemô-đun là chủ yếu để làm việc với tem thời gian unix; được biểu thị dưới dạng số dấu phẩy động được tính bằng giây kể từ kỷ nguyên unix. các datetimemô-đun có thể hỗ trợ rất nhiều các hoạt động tương tự, nhưng cung cấp một bộ hướng đối tượng hơn về chủng loại, và cũng có một số hạn chế hỗ trợ cho các múi giờ.


22
Hơn nữa, sự khác biệt giữa timevà là datetime.timegì?
SparkAndShine

Sẽ rất tốt để chi tiết các thuộc tính như nếu đó là thời gian thực / đơn điệu. Giống như trong tiêu chuẩn POSIX bạn có: CLOCK_REALTIME, CLOCK_MONOTONIC, CLOCK_THREAD, v.v ... Trên đồng hồ POSIX, hãy xem: stackoverflow.com/questions35323442/
Vajk Hermecz

11

Dính vào timeđể ngăn chặn sự mơ hồ DST.

Sử dụng độc quyền timemô-đun hệ thống thay vì datetimemô-đun để ngăn chặn các vấn đề mơ hồ với thời gian tiết kiệm ánh sáng ban ngày (DST) .

Chuyển đổi sang bất kỳ định dạng thời gian nào, bao gồm cả giờ địa phương, khá dễ dàng:

import time
t = time.time()

time.strftime('%Y-%m-%d %H:%M %Z', time.localtime(t))
'2019-05-27 12:03 CEST'

time.strftime('%Y-%m-%d %H:%M %Z', time.gmtime(t))
'2019-05-27 10:03 GMT'

time.time()là số dấu phẩy động biểu thị thời gian tính bằng giây kể từ kỷ nguyên hệ thống. time.time()là lý tưởng cho thời gian dập rõ ràng.

Nếu hệ thống chạy thêm giao thức thời gian mạng (NTP) , thì kết thúc với một cơ sở thời gian khá vững chắc.

Dưới đây là tài liệu của timemô-đun.


Trong ví dụ của bạn, bạn sử dụng time.localtime(), tất nhiên là có DST được nướng. Nếu chúng ta sẽ là người theo chủ nghĩa thuần túy, chúng ta không nên sử dụng time.gmtime()thay thế? :)
Seamus

@Seamus Đơn giản chỉ cần kiểm tra cả hai lệnh trong các ipythonchương trình time.gmtime()mang lại một tuple, trong khi đó time.time()cung cấp thời gian kỷ nguyên UNIX dưới dạng một giá trị thập phân duy nhất của giây trôi qua kể từ 00:00:00 UTC, Thứ Năm, ngày 1 tháng 1 năm 1970. Hàm này time.localtime(t)chuyển đổi thời gian kỷ nguyên thành cục bộ thời gian tuple. Vì vậy, câu trả lời cho câu hỏi của bạn là «không».
Serge Stroobandt

Có cách nào để thêm ngày vào một đối tượng thời gian không? với datetime có phương thức timedelta (days = 6).
Nehemias Herrera

@NehemiasHerrera t = time.time()là một số dấu phẩy động biểu thị thời gian tính bằng giây kể từ kỷ nguyên hệ thống. Do đó, người ta có thể chỉ cần thêm hoặc bớt 86400 giây cho mỗi ngày; t += 86400
Serge Stroobandt

5

Mô-đun thời gian có thể được sử dụng khi bạn chỉ cần thời gian của một bản ghi cụ thể - như giả sử bạn có một bảng / tệp riêng biệt cho các giao dịch cho mỗi ngày, sau đó bạn sẽ chỉ cần thời gian. Tuy nhiên, kiểu dữ liệu thời gian thường được sử dụng để lưu trữ chênh lệch thời gian giữa 2 điểm thời gian.

Điều này cũng có thể được thực hiện bằng cách sử dụng datetime, nhưng nếu chúng ta chỉ xử lý thời gian cho một ngày cụ thể, thì mô-đun thời gian có thể được sử dụng.

Datetime được sử dụng để lưu trữ một dữ liệu cụ thể và thời gian cho một bản ghi. Giống như trong một cơ quan cho thuê. Ngày đáo hạn sẽ là kiểu dữ liệu datetime.


3

Nếu bạn quan tâm đến múi giờ, bạn nên xem xét việc sử dụng pytz.


8
nghe có vẻ như ông quan tâm nhất đến các mô-đun thời gian và thời gian và sự khác biệt của các múi giờ giữa chúng. với tất cả sự tôn trọng, đưa một sự phụ thuộc khác vào điều này là khá nhiều không liên quan.
sbartell

3
Sự hỗ trợ của các múi giờ trong cả hai mô-đun thời gian và thời gian thực sự rất kém ... nếu anh ấy thực sự quan tâm đến việc xử lý các múi giờ theo cách hữu ích thì anh ấy thực sự nên biết về pytz. Bạn mang đến sự phụ thuộc để giải quyết vấn đề mà sự phụ thuộc hiện tại của bạn không giúp bạn giải quyết vấn đề của bạn ...
donkopotamus
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.