Преобразование строки в форматированную строку даты и времени с использованием Python - PullRequest
22 голосов
/ 23 февраля 2010

Я пытаюсь преобразовать строку «20091229050936» в «05:09 29 декабря 2009 (UTC)»

>>>import time
>>>s = time.strptime("20091229050936", "%Y%m%d%H%M%S")
>>>print s.strftime('%H:%M %d %B %Y (UTC)')

дает AttributeError: 'time.struct_time' object has no attribute 'strftime'

Очевидно, я допустил ошибку: время не так, это объект даты и времени! У него дата и компонент времени!

>>>import datetime
>>>s = datetime.strptime("20091229050936", "%Y%m%d%H%M%S")

дает AttributeError: 'module' object has no attribute 'strptime'

Как я должен преобразовать строку в форматированную строку даты?

Ответы [ 5 ]

41 голосов
/ 23 февраля 2010

Для datetime объектов strptime - это статический метод класса datetime, а не бесплатная функция в модуле datetime:

>>> import datetime
>>> s = datetime.datetime.strptime("20091229050936", "%Y%m%d%H%M%S")
>>> print s.strftime('%H:%M %d %B %Y (UTC)')
05:09 29 December 2009 (UTC)
11 голосов
/ 23 февраля 2010

time.strptime возвращает time_struct; time.strftime принимает time_struct в качестве необязательного параметра:

>>>s = time.strptime(page.editTime(), "%Y%m%d%H%M%S")
>>>print time.strftime('%H:%M %d %B %Y (UTC)', s)

дает 05:09 29 December 2009 (UTC)

1 голос
/ 10 мая 2015

Вы можете использовать easy_date , чтобы упростить:

import date_converter
my_datetime = date_converter.string_to_string("20091229050936", "%Y%m%d%H%M%S", "%H:%M %d %B %Y (UTC)")
1 голос
/ 03 апреля 2014
from datetime import datetime
s = datetime.strptime("20091229050936", "%Y%m%d%H%M%S")
print("{:%H:%M %d %B %Y (UTC)}".format(s))
1 голос
/ 25 июля 2011

Для меня это самое лучшее и работает на Google App Engine

Пример, показывающий UTC-4

import datetime   
UTC_OFFSET = 4
local_datetime = datetime.datetime.now()
print (local_datetime - datetime.timedelta(hours=UTC_OFFSET)).strftime("%Y-%m-%d %H:%M:%S")
...