2013-07-23 3 views
15

Ich versuche, UTC-Datum Zeichenfolge als "JJJJMMTT"Wie erhalten Sie eine UTC-Datums-Zeichenfolge in Python?

Vorerst ich die folgende,

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

Früher habe ich zu tun zu bekommen:

datetime.date.today().strftime() 

aber das gibt mir Datums-String in lokalen TZ

Wie kann ich eine UTC-Datums-String bekommen?

+0

Mögliches Duplikat von [Wie UTC-Zeit in Python zu bekommen?] (Http://stackoverflow.com/questions/15940280/how-to-get-utc-time-in-python) für den UTC Teil, http: //stackoverflow.com/questions/311627/how-to-print-date-in-a-regular-format-in-python für den Stringteil. –

Antwort

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

Oder wie Davidism darauf hingewiesen, würde diese Arbeit auch:

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

ich den ersten Ansatz bevorzugen, wie es Ihnen in der Gewohnheit, mit bewusst Datetimes Zeitzone bekommt - aber wie JF Sebastian wies darauf hin, - Es erfordert Python 3.2+. Der zweite Ansatz funktioniert sowohl in 2.7 als auch in 3.2.

+5

Warum 'timezone.utc' und nicht' datetime.utcnow() '? – davidism

+2

@davidism - weil das Ihnen eine * naive * Datetime mit tzinfo = none gibt. Siehe [diese Dokumentation] (http://docs.python.org/3.3/library/datetime.html#datetime.datetime.utcnow). Ich nehme an, da das OP nur eine Saite haben möchte, würde das hier funktionieren. –

+9

Hinweis: 'timezone.utc' ist nur Python 3.2+. – jfs

Verwandte Themen