【问题标题】:Joda-Time Number of Days since EpochJoda-Time 自纪元以来的天数
【发布时间】:2013-05-02 10:52:40
【问题描述】:

我有一个问题,即Joda-Time 库返回的epoch 以来的天数根据我输入的日期的时间而变化。如果我输入 2012-05-14 22:00:002012-05-14 02:00:00 我会期待相同的结果,因为它们都在同一天。以下是我的代码。

        try {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date1 = sdf.parse("2013-05-03 07:00:00");
        Date date2 = sdf.parse("2013-05-03 23:30:00");


        MutableDateTime epoch = new MutableDateTime();
        epoch.setDate(0); //Set to Epoch time
        System.out.println("Epoch: " + epoch);
        Days days1 = Days.daysBetween(epoch, new MutableDateTime(date1.getTime()));
        Days days2 = Days.daysBetween(epoch, new MutableDateTime(date2.getTime()));
        System.out.println("1) Days Since Epoch: " + days1.getDays());
        System.out.println("2) Days Since Epoch: " + days2.getDays());
    } catch (ParseException e) {
        e.printStackTrace(); 
    }

Epoch: 1970-01-01T11:09:00.414+01:00
1) Days Since Epoch: 15827
2) Days Since Epoch: 15828

有人知道我做错了什么吗?

【问题讨论】:

  • 结果取决于您的时区。请记住,纪元的开始时间是 01-01-1970, 00:00:00 GMT。根据您的时区,2012-05-14 22:00 和 2012-05-14 02:00 在转换为 GMT 时可能在不同的日期。

标签: java jodatime


【解决方案1】:

OK 发现了问题(就在我自己的眼前 :))...我得到的时代确实是从 1970-01-01 开始,但不是从那天的第一个毫秒开始。

我需要添加以下行来对其进行排序:

epoch.setTime(0);

【讨论】:

  • 请注意...对于想要忽略时间而只关注日期的一般情况,请在 DateTime 上调用 withTimeAtStartOfDay() 方法。不确定这是否适用于这个问题;我没有测试。
猜你喜欢
  • 2010-09-13
  • 2014-09-02
  • 2013-09-11
  • 1970-01-01
  • 2017-02-20
  • 2012-12-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多