时间戳的定义请看百科unix时间戳,须要注意的时间戳为当前时刻减去UTC时间(1970.1.1)零点时刻的秒数差,与当前系统所处的时区无关,同一时刻无论在任什么时候区下获得的时间戳都是同样的。python
最近由于存储数据库须要将时间转为时间戳的字节型来存储,用了python datetime模块,期间遇到一些问题,如今终于弄懂了时间戳、时间和UTC时间的正确转换关系,总结如下供你们参考。数据库
dt=datetime.datetime.now() #获取本地当前时间
dt.timestamp() #获取时间戳
注:函数
由1)的阐述获得python在不一样时区下都能得到时间戳,我就采用了utc时间得到时间戳,datetime有两种方式得到utc时间:spa
方式一:unix
dt=datetime.datetime.now(timezone.utc) #类型为aware datetime object,时区为utc
dt.timestamp() #经过减去EPOCH获得时间戳
方式二:code
dt=datetime.datetime.utcnow() #类型为naive datetime object,不包含时区信息
dt.timestamp() #经过mktime获得时间戳(获得的时间戳是错误的
datetime.datetime.fromtimestamp(timestamp) #得到本地时间,类型naive datetime obiect
两种方式得到utc时间,但datetime object类型不同。blog
方式一:get
datetime.datetime.utcfromtimestamp(timestamp) #类型naive datetime object
方式二:数学
datetime.datetime.fromtimestamp(timestamp,timezone.utc) #类型aware datetime object。