In python, there are four types that are commonly used to manage time. Timestamps, time tuples, datetime objects, and strings. Programmers often have to convert between these types depending on the situation or API. This article will describe all conversion patterns.
Python Time Conversion Table
Table 1 shows the python conversion table. Click on the pattern you want to see.input \ output | datetime | time tuple | time stamp | string |
---|---|---|---|---|
datetime | — | datetime ↓ time tuple | datetime ↓ time stamp | datetime ↓ string |
time tuple | time tuple ↓ datetime | — | time tuple ↓ time stamp | time tuple ↓ string |
time stamp | time stamp ↓ datetime | time stamp ↓ time tuple | — | time stamp ↓ string |
string | string ↓ datetime | string ↓ time tuple | string ↓ time stamp | — |
datetime → time tuple
>>> dt = datetime.datetime(2010, 12, 31, 23, 59, 59) >>> tt = dt.timetuple() >>> print tt time.struct_time(tm_year=2010, tm_mon=12, tm_mday=31, tm_hour=23, tm_min=59, tm_sec=59, ...)
datetime → time stamp
>>> dt = datetime.datetime(2010, 12, 31, 23, 59, 59) >>> ts = time.mktime(dt.timetuple()) >>> print ts 1293868799.0
datetime → string
>>> dt = datetime.datetime(2010, 12, 31, 23, 59, 59) >>> st = dt.strftime('%Y-%m-%d %H:%M:%S') >>> print st 2010-12-31 23:59:59
time tuple → datetime
>>> tt = (2010, 12, 31, 23, 59, 59, 4, 365, 0) >>> dt = datetime.datetime(tt[0], tt[1], tt[2], tt[3], tt[4], tt[5]) >>> print dt 2010-12-31 23:59:59 >>> >>> dt = datetime.datetime(*tt[0:6]) # same with the code above >>> print dt 2010-12-31 23:59:59
time tuple → time stamp
>>> tt = (2010, 12, 31, 23, 59, 59, 4, 365, 0) >>> ts = time.mktime(tt) >>> print ts 1293868799.0
time tuple → string
>>> tt = (2010, 12, 31, 23, 59, 59, 4, 365, 0) >>> st = time.strftime('%Y-%m-%d %H:%M:%S', tt) >>> print st 2010-12-31 23:59:59
time stamp → datetime
>>> ts = 1293868799.0 >>> dt = datetime.datetime.fromtimestamp(ts) # for local time >>> print dt 2010-12-31 23:59:59 >>> >>> dt = datetime.datetime.utcfromtimestamp(ts) # for UTC >>> print dt 2011-01-01 07:59:59
time stamp → time tuple
>>> ts = 1293868799.0 >>> tt = time.localtime(ts) >>> print tt time.struct_time(tm_year=2010, tm_mon=12, tm_mday=31, tm_hour=23, tm_min=59, tm_sec=59, ...) >>> >>> tt = time.gmtime(ts) >>> print tt time.struct_time(tm_year=2011, tm_mon=1, tm_mday=1, tm_hour=7, tm_min=59, tm_sec=59, ...)
time stamp → string
>>> ts = 1293868799.0 >>> st = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S') >>> print st 2010-12-31 23:59:59 >>> >>> st = datetime.datetime.utcfromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S') >>> print st 2011-01-01 07:59:59
string → datetime
>>> s = '2010-12-31 23:59:59' >>> dt = datetime.datetime.strptime(s, '%Y-%m-%d %H:%M:%S') >>> print dt 2010-12-31 23:59:59
string → time tuple
>>> st = '2010-12-31 23:59:59' >>> tt = time.strptime(st, '%Y-%m-%d %H:%M:%S') >>> print tt time.struct_time(tm_year=2010, tm_mon=12, tm_mday=31, tm_hour=23, tm_min=59, tm_sec=59, ...)
string → time stamp
>>> s = '2010-12-31 23:59:59' >>> ts = time.mktime(time.strptime(s, '%Y-%m-%d %H:%M:%S')) >>> print ts 1293868799.0
No comments:
Post a Comment