我正在尝试实现 Joda-Time倒计时到圣诞节,但到目前为止我很震惊。我尝试了 java.util.Date,大多数 StackOverflow 问题和答案都建议使用 Joda-Time。但我无法让它工作。有些代码给出了不同的答案。
这是我试过的一些代码,
DateTime now = new DateTime();
DateTime christmas = new DateTime(2012, 12, 25, 8, 0, 0, 0);
Days daysToChristmas = Days.daysBetween(today, christmas);
System.out.println(daysToChristmas.toString());
这将打印 P187D 作为答案。
DateTime start = new DateTime(DateTime.now());
DateTime end = new DateTime(2012, 12, 25, 0, 0, 0 ,0);
Interval interval = new Interval(start, end);
Period period = interval.toPeriod();
System.out.println("Seconds " + period.getSeconds());
System.out.println("Minutes " + period.getMinutes());
System.out.println("Hours " + period.getHours());
System.out.println("Days " + period.getDays());
这会打印以下结果,
Seconds 36
Minutes 21
Hours 7
Days 4
我哪里错了?
最佳答案
您应该使用 Period
来确定所涉及的月数/天数/等:
Period period = new Period(start, end);
将 Interval
转换为句点也可以,但是无参数重载包括所有 句点单位 - 而且您没有打印出月份。
现在,如果您只想要天、小时、分钟、秒,那么您需要创建一个合适的PeriodType
,例如
PeriodType periodType = PeriodType.dayTime().withMillisRemoved();
Period period = new Period(start, end, periodType);
然后你可以请求那些单独的字段,一切都应该没问题。
(您实际上可以只使用 dayTime()
,因为毫秒不会干扰其他任何东西。)
所以你可以直接从 start
和 end
建立你的周期,或者如果你想保留 Interval
,你可以使用:
Period period = interval.toPeriod(periodType);
关于java - 使用 Joda-Time 倒数圣诞节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11118262/