Reputation: 8016
I'm trying to convert a string "20091229050936" into "05:09 29 December 2009 (UTC)"
>>>import time
>>>s = time.strptime("20091229050936", "%Y%m%d%H%M%S")
>>>print s.strftime('%H:%M %d %B %Y (UTC)')
gives
AttributeError: 'time.struct_time' object has no attribute 'strftime'
Clearly, I've made a mistake: time is wrong, it's a datetime object! It's got a date and a time component!
>>>import datetime
>>>s = datetime.strptime("20091229050936", "%Y%m%d%H%M%S")
gives
AttributeError: 'module' object has no attribute 'strptime'
How am I meant to convert a string into a formatted date-string?
Upvotes: 23
Views: 85658
Reputation: 2325
For me this is the best and it works on Google App Engine as well
Example showing 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")
Upvotes: 2
Reputation: 4455
You can use easy_date to make it easy:
import date_converter
my_datetime = date_converter.string_to_string("20091229050936", "%Y%m%d%H%M%S", "%H:%M %d %B %Y (UTC)")
Upvotes: 1
Reputation: 29335
from datetime import datetime
s = datetime.strptime("20091229050936", "%Y%m%d%H%M%S")
print("{:%H:%M %d %B %Y (UTC)}".format(s))
Upvotes: 2
Reputation: 229583
For datetime
objects, strptime
is a static method of the datetime
class, not a free function in the datetime
module:
>>> 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)
Upvotes: 43
Reputation: 8016
time.strptime
returns a time_struct
; time.strftime
accepts a time_struct
as an optional parameter:
>>>s = time.strptime(page.editTime(), "%Y%m%d%H%M%S")
>>>print time.strftime('%H:%M %d %B %Y (UTC)', s)
gives
05:09 29 December 2009 (UTC)
Upvotes: 14