自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