python的时间到底是怎么回事

python的时间戳


日常用到的通常是字符串,时间戳之间的转化,一般用time模块就够了,要注意的是utc时间和local时间的区分。由于时区划分和utc,有时候比较麻烦。

转换


# 字符串转stime
time.strptime("19700101", "%Y%m%d")
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=-1)
 # 看一下stime的时间戳,可以看出mktime是local的
 >>> st = time.strptime("19700101", "%Y%m%d")
>>> time.mktime(st)
-28800.0

# localtime 0 是早上8点
>>> time.localtime(0)
time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)
# time.time也是local的,也就是说实际是从北京时间早上8点开始算的时间戳
# 实际中经常用到直接使用时间戳,而不是localtime一下,那么应该如何转化呢
# 比如算现在是几点
>>> ( ts + 28800 ) % 86400
39896.08427000046
>>> 39896 / 3600
11
# 今天是第几天
>>> now = time.time()
>>> ( now + 28800 ) / 86400
16869.51133022866
>>> 
# -----------------------------------------------------------------
# 把时间戳按照0点划分
# 今天早上0点的时间戳是多少
>>> now = time.time()
>>> now - now % 86400 - 28800
1457452800.0
# 距离下一个8点还有多少秒
>>> now = time.time()
>>> (86400 - now % 86400 ) % 86400
70641.66337490082
# 距离下一个0点还有多少秒
>>> (86400 -28800 - now % 86400 ) % 86400
59841.66337490082

你可能感兴趣的:(python的时间到底是怎么回事)