首頁  >  文章  >  後端開發  >  python取得指定時間段內的隨機不重複時間點的實作程式碼

python取得指定時間段內的隨機不重複時間點的實作程式碼

高洛峰
高洛峰原創
2017-03-20 13:23:472268瀏覽

這篇文章介紹python取得指定時間段內的隨機不重複時間點的實作程式碼

場景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 = pmod(sec,60)
    h,m = pmod(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日的時間戳

UNIX時間,或稱為POSIX時間是UNIX或類別UNIX系統所使用的時間表示方式:從協調世界時1970年1月1日0時0分0秒起至現在的總秒數。

任當天24小時內的時間轉成秒數後都剛好等於UTC 1970年1月1日的時間戳記。所以有需要的話可以使用程式語言內建的時間戳函數來轉換。

以上是python取得指定時間段內的隨機不重複時間點的實作程式碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn