2011-01-24 27 views
13
import time 
print time.strftime("%a, %d %b %Y %I:%M %p %Z", time.gmtime()) 

Tôi sống ở California. Vì lý do nào đó, mã này báo cáo thời gian bằng GMT, thay vì tôn trọng múi giờ của hệ thống. Tôi biết rằng strftime biết tôi đang ở thái bình dương, bởi vì nó vẫn in 'PST' ở cuối, nhưng nó vẫn còn 8 giờ trước. Có ai khác nhận thấy điều này không? Bất cứ ai biết điều gì là sai với hệ thống của tôi hoặc mã của tôi?Python: strftime, gmtime không tôn trọng múi giờ

EDIT: chạy date tại dòng lệnh cho tôi ngày chính xác. Ngoài ra, tôi đã chạy trên hai máy tính khác nhau (mac và linux) và cả hai đều báo cáo trước 8 giờ. Bạn có dự kiến ​​sửa chữa múi giờ trước khi sử dụng strftime?

+0

Điều gì xảy ra nếu bạn chỉ chạy "ngày" trên dòng lệnh? Có thể là thời gian máy tính của bạn được đặt thành GMT, nhưng có múi giờ của California không? –

Trả lời

25

time.gmtime() trả về thời gian bằng UTC. Những gì bạn cần là time.localtime(), trong đó nhận biết múi giờ. Hành vi này được ghi lại rõ ràng trong số time module documentation.

EDIT:

Để chuyển đổi bất kỳ dấu thời gian time.time() phong cách để một struct_time, bạn có thể cung cấp một cuộc tranh cãi để time.localtime():

>>> print time.strftime("%a, %d %b %Y %I:%M:%S %p %Z", time.localtime(10.5)) 
Thu, 01 Jan 1970 02:00:10 AM EET 
+0

time.localtime() rất tuyệt, nhưng tôi nhận được dấu thời gian của tôi từ một tệp trong UTC. Làm cách nào để chuyển đổi múi giờ từ UTC sang múi giờ địa phương của tôi? –

+0

time.localtime() hoạt động tốt. Cảm ơn bạn! –

+1

@Shaun: Bạn có thể tìm thấy [pytz] (http://pytz.sourceforge.net/) hữu ích cho các chuyển đổi múi giờ có liên quan hơn. 'time.localtime' có một số vấn đề khi làm việc với dấu thời gian không phải bây giờ (ví dụ: trong quá khứ hoặc tương lai ngoài thay đổi tiết kiệm ánh sáng ban ngày, v.v.). – ephemient

0

Để thay đổi múi giờ trên hệ thống unix của bạn, làm một cái gì đó như thế này:

ln -sf /usr/share/zoneinfo/America/Los_Angeles /etc/localtime 

Duyệt qua trong /usr/share/zoneinfo/ để tìm những gì bạn muốn và thay đổi lệnh trên

+0

Tại sao bỏ phiếu xuống không có bình luận? – Landon

Các vấn đề liên quan