2014-10-04 2 views
2

Довольно просто, но я новичок python. Я пытаюсь напечатать текущую дату и время в формате UTC со специальным форматом:Печать текущего UTC datetime со специальным форматом

Python 2.6.6

import datetime, time 
print time.strftime("%a %b %d %H:%M:%S %Z %Y", datetime.datetime.utcnow()) 

TypeError: argument must be 9-item sequence, not datetime.datetime 
+0

'time' не требуется. Просто используйте 'datetime.datetime.utcnow(). Strftime ("% a% b% d% H:% M:% S% Z% Y ")' может решить вашу проблему уже. – stanleyxu2005

ответ

9

time.strftime() занимает time.struct_time-like time tuples, не datetime объектов.

Используйте datetime.strftime() method вместо:

>>> import datetime 
>>> datetime.datetime.utcnow().strftime("%a %b %d %H:%M:%S %Z %Y") 
'Sat Oct 04 13:00:36 2014' 

, но обратите внимание, что в Python 2.6 не часовой пояс объекты не включены, поэтому ничего не печатается для %Z; объект, возвращаемый datetime.datetime.utcnow(), равен наивный (с ним не связан связанный объект часовой пояс).

Поскольку вы используете utcnow(), просто включить часовой пояс вручную:

>>> datetime.datetime.utcnow().strftime("%a %b %d %H:%M:%S UTC %Y") 
'Sat Oct 04 13:00:36 UTC 2014' 
2

utcnow() возвращает объект; Вы должны вызвать .strftime на этом объекте:

>>> datetime.datetime.utcnow() 
datetime.datetime(2014, 10, 4, 13, 0, 2, 749890) 
>>> datetime.datetime.utcnow().strftime("%a %b %d %H:%M:%S %Z %Y") 
'Sat Oct 04 13:00:16 2014' 

или передать объект в качестве первых аргумента datetime.datetime.strftime:

>>> type(datetime.datetime.utcnow()) 
<class 'datetime.datetime'> 
>>> datetime.datetime.strftime(datetime.datetime.utcnow(), "%a %b %d %H:%M:%S %Z %Y") 
'Sat Oct 04 13:00:16 2014' 
1

Для печати текущего времени в формате UTC, не изменяя формат строку, вы можете define UTC tzinfo class yourself based on the example from datetime documentation:

from datetime import tzinfo, timedelta, datetime 

ZERO = timedelta(0) 

class UTC(tzinfo): 

    def utcoffset(self, dt): 
     return ZERO 

    def tzname(self, dt): 
     return "UTC" 

    def dst(self, dt): 
     return ZERO 


utc = UTC() 

# print the current time in UTC 
print(datetime.now(utc).strftime("%a %b %d %H:%M:%S %Z %Y")) 
# -> Mon Oct 13 01:27:53 UTC 2014 

timezone класса включенных в Python начиная с 3.2:

from datetime import timezone 
print(datetime.now(timezone.utc).strftime("%a %b %d %H:%M:%S %Z %Y")) 
# -> Mon Oct 13 01:27:53 UTC+00:00 2014 
Смежные вопросы