localTimeDate公式转换

问题描述 投票:0回答:1

我遇到了以下公式,其中从TimeStamp和Timezone中检索localTimeDay:

long localTimeDay = (timeStamp + timeZone) / (24 * 60 * 60 * 1000) * (24 * 60 * 60 * 1000);

我无法理解Local Time Day的含义以及该公式如何“神奇地”基于TS和TZ进行转换。

任何人都可以帮助理解吗?

java timestamp timezone epoch
1个回答
0
投票
  • [timestamp是自1970年1月1日世界标准时间00:00以来的毫秒数。
  • timeZone是距UTC的偏移量(以毫秒为单位)。它可以是正数,负数或零。当我添加偏移量时,我得到一个不同的时间点,其中该UTC偏移量的日期和时间与UTC中的原始日期和时间相同。
  • 除以24 * 60 * 60 * 1000会从毫秒转换为自纪元以来的天数。一天的任何一部分,即一天中的任何时间都将被丢弃。
  • [24 * 60 * 60 * 1000的乘积会从天转换为毫秒。由于一天中的时间已被丢弃,因此我们现在的时间是该天的世界标准时间00:00。

因此,这是一种从UTC时间点转换到一天开始的某个UTC偏移量的方法。例如,如果起始点为2020-04-23T05:16:45Z且偏移量为+02:00,则结果将表示时间2020-04-23T00:00 + 02:00。

这不是您程序中想要的代码。您应该将这种转换留给经过验证的库方法。但是,可能是在经过测试和验证的库中找到的代码。

© www.soinside.com 2019 - 2024. All rights reserved.