2013-07-23 33 views
15

tôi đang cố gắng để có được chuỗi ngày utc là "YYYYMMDD"Làm cách nào để nhận chuỗi ngày tháng UTC bằng Python?

Để bây giờ tôi làm như sau,

nowTime = time.gmtime(); 
nowDate = date(nowTime.tm_year, nowTime.tm_mon, nowTime.tm_mday) 
print nowDate.strftime('%Y%m%d') 

tôi sử dụng để làm:

datetime.date.today().strftime() 

nhưng điều này mang lại cho tôi chuỗi ngày tại địa phương TZ

Làm cách nào để nhận chuỗi ngày UTC?

+0

Bản sao có thể có của [Cách nhận thời gian UTC bằng Python?] (Http://stackoverflow.com/questions/15940280/how-to-get-utc-time-in-python) cho phần UTC, http: //stackoverflow.com/questions/311627/how-to-print-date-in-a-regular-format-in-python cho phần chuỗi. –

Trả lời

28
from datetime import datetime, timezone 
datetime.now(timezone.utc).strftime("%Y%m%d") 

Hoặc như Davidism chỉ ra, điều này cũng sẽ làm việc:

from datetime import datetime 
datetime.utcnow().strftime("%Y%m%d") 

Tôi thích cách tiếp cận đầu tiên, vì nó giúp bạn trong thói quen sử dụng múi giờ datetimes biết - nhưng như JF Sebastian chỉ ra - nó đòi hỏi Python 3.2+. Cách tiếp cận thứ hai sẽ hoạt động ở cả 2.7 và 3.2 chi nhánh.

+5

Tại sao lại sử dụng 'timezone.utc' và không phải' datetime.utcnow() '? – davidism

+2

@davidism - bởi vì điều đó mang lại cho bạn một giờ * ngây thơ * với tzinfo = none. Xem [các tài liệu này] (http://docs.python.org/3.3/library/datetime.html#datetime.datetime.utcnow). Mặc dù, tôi cho rằng kể từ khi OP chỉ muốn một chuỗi, sau đó hoặc là sẽ làm việc ở đây. –

+9

Lưu ý: 'timezone.utc' chỉ là Python 3.2+. – jfs