Java:如何计算从开始时间开始的天数(带时区)

时间:2013-06-25 11:06:00

标签: java date jodatime

我想计算从“开始时间”到当前日期的天数。这可以通过简单的计算(时间戳/ 24/60/60/1000 = daysFromBeginningOfTime)轻松实现,但扭曲的是我需要知道时区。世界上任何地方的时间戳都是相同的,但是当你用适当的时区解析它时,它反映了位置之间的差异,所以仅使用时间戳不起作用,我不想自己处理所有的时区转换。

示例: 如果它在伦敦的23:30,那天的数字是18843,那么在阿姆斯特丹是0:30,那天的数字应该是18844。

我看了joda.time,但没有找到我想要的东西。 有人有什么想法吗?

2 个答案:

答案 0 :(得分:1)

(忽略零点不是“时间的开始”......以及时间开始的实际时间点可能是不可知的......)

以下是如何计算自“给定时区的本地时间UNIX纪元” 1 以来的天数。

  1. 抓住代表当地时区的对象。
  2. 从对象
  3. 获取时区的偏移量
  4. 将其转换为毫秒并将其添加到当前UTC时间。
  5. 像以前一样计算日期编号。

  6. 1 - ......无论那意味着什么。

答案 1 :(得分:1)

我认为问题是由于错误的初始假设而出现的。

OP在他的例子中提出的论点是不正确的。无论时钟在伦敦或阿姆斯特丹显示什么,与时代开始的时差是 - 在每个时间点 - 独立于你在世界的位置。

因此,解决方案是将给定的输入日期解析为UTC时间戳并像以前一样继续。