上篇 《python時間時分秒與秒數的互相轉換》http://www.cnblogs.com/gayhub/p/6154707.html 提到了把時間轉成秒數的方法, 這篇寫寫轉換成秒數後有些什麼用處。 場景1:取N個07:30:00 09:30:33之間的隨機時間。 下麵是我的代碼: 從代碼中可以 ...
上篇 《python時間時分秒與秒數的互相轉換》http://www.cnblogs.com/gayhub/p/6154707.html 提到了把時間轉成秒數的方法,
這篇寫寫轉換成秒數後有些什麼用處。
場景1:取N個07:30:00-09:30:33之間的隨機時間。
下麵是我的代碼:
#2016-12-10 7:06:29 codegay
import random
st = "07:30:00"
et = "09:30:33"
def time2seconds(t):
h,m,s = t.strip().split(":")
return int(h) * 3600 + int(m) * 60 + int(s)
def seconds2time(sec):
m,s = divmod(sec,60)
h,m = divmod(m,60)
return "%02d:%02d:%02d" % (h,m,s)
sts = time2seconds(st) #sts==27000
ets = time2seconds(et) #ets==34233
rt = random.sample(range(sts,ets),10)
#rt == [28931, 29977, 33207, 33082, 31174, 30200, 27458, 27434, 33367, 30450]
rt.sort() #對時間從小到大排序
for r in rt:
print(seconds2time(r))
"""
輸出:
07:43:12
07:54:31
08:08:33
08:27:46
08:46:53
08:48:17
08:55:20
08:59:16
09:10:23
09:15:58
"""
從代碼中可以發現思路是把時間轉成秒數後,那麼就可以用range生07:30-09:30之間的時間秒數,再用random.sample從中取出個N個秒數,最後再把秒數轉成所需要的時間格式。
場景2: 時間大小比較和時間範圍的判斷
>>> "09:30:00" > "9:30:00"
False
>>> "09:30:00" == "9:30:00"
False
基於字元串的判斷可能會出現像上面的情況,我感覺統一轉成數字後再計算更可靠。
場景3:時間轉成秒數後剛好等於1970年1月1日的時間戳
參考維基百科:https://zh.wikipedia.org/wiki/%E5%8D%8F%E8%B0%83%E4%B8%96%E7%95%8C%E6%97%B6
UNIX時間,或稱POSIX時間是UNIX或類UNIX系統使用的時間表示方式:從協調世界時1970年1月1日0時0分0秒起至現在的總秒數。
任意當天24小時內的時間轉成秒數後都剛好等於UTC 1970年1月1日的時間戳。所以有需要的話可以使用編程語言內置的時間戳函數進行轉換。