Joda-Time自纪元以来的天数

7

我有一个问题,即使用Epoch作为参考日期,Joda-Time库返回的天数会根据我输入的日期时间而改变。如果我输入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

有人知道我哪里做错了吗?


结果取决于您的时区。请记住,epoch 的起始时间是 01-01-1970, 00:00:00 GMT。根据您的时区,当将 2012-05-14 22:00 和 2012-05-14 02:00 转换为 GMT 时,它们可能在不同的日期。 - Jesper
1个回答

3

好的,我找到了问题(它就在我的眼前:))... 我得到的纪元确实是从1970年01月01日开始的,但不是从那一天的第一毫秒开始。

我需要添加以下行来解决它:

epoch.setTime(0);

只是一点提醒...如果想要忽略时间,只关注日期的一般情况,请在DateTime上调用withTimeAtStartOfDay()方法。不确定是否适用于此问题;我没有测试过。 - Basil Bourque

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接