datetime

Current time

datetime module里有一个datetime class

from datetime import datetime
datetime.now()

specific time

dt = datetime(2015, 4, 19, 12, 20)

timestamp

我们把1970年1月1日 00:00:00 UTC+00:00时区的时刻称为epoch time,记为0(1970年以前的时间timestamp为负数),当前时间就是相对于epoch time的秒数.

timestamp = 0 = 1970-1-1 00:00:00 UTC+0:00

timestamp与时区没有关系,因为它根据UTC时间确定了。

对于datetime只要简单调用timestamp()

dt.timestamp()

timestamp也可以直接被转换到UTC标准时区的时间:

>>> from datetime import datetime
>>> t = 1429417200.0
>>> print(datetime.fromtimestamp(t)) # 本地时间
2015-04-19 12:20:00
>>> print(datetime.utcfromtimestamp(t)) # UTC时间
2015-04-19 04:20:00

str to datetime

使用datetime.strptime()

>>> from datetime import datetime
>>> cday = datetime.strptime('2015-6-1 18:19:59', '%Y-%m-%d %H:%M:%S')
>>> print(cday)
2015-06-01 18:19:59

datetime to str

strftime()

>>> from datetime import datetime
>>> now = datetime.now()
>>> print(now.strftime('%a, %b %d %H:%M'))
Mon, May 05 16:28

datetime calculate

from datetime import timedelta

now + timedelta(hours=10)

time zone

tzinfo utcnow()

Summary

如果要存储datetime,最佳方法是将其转换为timestamp再存储,因为timestamp的值与时区完全无关。