自24的小時數有86400000毫秒,則是安全調用:使用模運算符(%)和unix時期時間戳安全嗎?
timestamp % 86400000
期間某一天獲得通過毫秒? timestamp
是以毫秒錶示的unix時期,例如1480771537000
。
我想知道這是否是一種安全的技術,因爲閏秒正被添加和減少時不時?上面的代碼總是會在一天中正確返回毫秒,而不管timestamp
是什麼?
自24的小時數有86400000毫秒,則是安全調用:使用模運算符(%)和unix時期時間戳安全嗎?
timestamp % 86400000
期間某一天獲得通過毫秒? timestamp
是以毫秒錶示的unix時期,例如1480771537000
。
我想知道這是否是一種安全的技術,因爲閏秒正被添加和減少時不時?上面的代碼總是會在一天中正確返回毫秒,而不管timestamp
是什麼?
是的,你可以使用timestamp % 86400000
告訴時間戳是否代表當天午夜/開始(假設時間戳是毫秒因爲時代,而不是秒)。
根據this Stack Overflow answer就Unix時間而言,總有86400000毫秒的時間,儘管實際上我們有時會添加leap seconds,因此有些日子會延長一秒。
@RyanVincent我使用的是由Android產生的Unix時間戳返回毫秒 - 感謝指出,通過本書Unix紀元以秒爲單位。儘管如此,這並不重要,考慮與秒問相同的問題。我的用例從白天顯示剩餘時間到午夜執行操作有所不同 – Voy
@RyanVincent是的,當我檢測到從一天到另一天的變化時,我試圖實現的一件事是運行一些邏輯。除此之外,我確實需要知道白天已經過去的時間,以顯示一天中剩餘的時間。請注意,我正在使用NTP時間戳,而不是機器時鐘 – Voy
@RyanVincent我目前正在用Java編寫。感謝您的建議,但這些細節又是無關緊要的,因爲這個問題並沒有要求特別的實施和我的使用案例。它涉及到unix時代理論和對unix時間戳執行模運算的穩健性,考慮閏秒 – Voy