2013-06-18 40 views
9

Làm cách nào để lấy tập lệnh python của tôi để kiểm tra xem một múi giờ cụ thể có được lưu trữ trong một biến bằng DST ngay bây giờ không? Máy chủ của tôi được đặt thành UTC. Vì vậy, tôi có nói ví dụCó phải múi giờ cụ thể sử dụng DST ngay bây giờ không?

zonename = Pacific/Wallis 

Tôi muốn chạy các truy vấn về nếu nó được sử dụng DST ngay bây giờ và có câu trả lời trở lại là một trong hai thực sự của sai.

Trả lời

13
from pytz import timezone 
from datetime import datetime 

zonename = "Pacific/Wallis" 
now = datetime.now(tz=timezone(zonename)) 
dst_timedelta = now.dst() 
### dst_timedelta is offset to the winter time, 
### thus timedelta(0) for winter time and timedelta(0, 3600) for DST; 
### it returns None if timezone is not set 

print "DST" if dst_timedelta else "no DST" 

thay thế là sử dụng:

now.timetuple().tm_isdst 

Mà có thể có một trong 3 giá trị: 0 cho không DST, 1 cho DST và -1 cho múi giờ không được thiết lập.

+0

giải pháp (độc lập) của tôi cho [câu hỏi trùng lặp] (http://stackoverflow.com/q/19774709/4279) tương tự kỳ lạ (bao gồm cả tên biến). – jfs

+0

@JFSebastian: * "Phải có một— và tốt nhất là chỉ có một - cách rõ ràng để làm điều đó." * [PEP-20 aka The Zen of Python] (https://www.python.org/dev/peps/ pep-0020 /) ;-) – vartec

+2

đó là lý do tại sao tôi yêu Python :) – jfs

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