python的時間戳
日常用到的通常是字符串,時間戳之間的轉(zhuǎn)化淮菠,一般用time模塊就夠了男公,要注意的是utc時間和local時間的區(qū)分。由于時區(qū)劃分和utc合陵,有時候比較麻煩枢赔。
轉(zhuǎn)換
# 字符串轉(zhuǎn)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點(diǎn)
>>> 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的拥知,也就是說實(shí)際是從北京時間早上8點(diǎn)開始算的時間戳
# 實(shí)際中經(jīng)常用到直接使用時間戳糠爬,而不是localtime一下,那么應(yīng)該如何轉(zhuǎn)化呢
# 比如算現(xiàn)在是幾點(diǎn)
>>> ( ts + 28800 ) % 86400
39896.08427000046
>>> 39896 / 3600
11
# 今天是第幾天
>>> now = time.time()
>>> ( now + 28800 ) / 86400
16869.51133022866
>>>
# -----------------------------------------------------------------
# 把時間戳按照0點(diǎn)劃分
# 今天早上0點(diǎn)的時間戳是多少
>>> now = time.time()
>>> now - now % 86400 - 28800
1457452800.0
# 距離下一個8點(diǎn)還有多少秒
>>> now = time.time()
>>> (86400 - now % 86400 ) % 86400
70641.66337490082
# 距離下一個0點(diǎn)還有多少秒
>>> (86400 -28800 - now % 86400 ) % 86400
59841.66337490082