Isu*_*nka 5 java time datetime jodatime countdown
我正在尝试实施Joda-Time倒计时到圣诞节,但到目前为止,我很震惊.我尝试了java.util.Date和大多数建议使用Joda-Time的StackOverflow问题和答案.但我无法让它发挥作用.一些代码给出不同的答案.
这是我试过的一些代码,
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());
Run Code Online (Sandbox Code Playgroud)
这打印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());
Run Code Online (Sandbox Code Playgroud)
这打印出以下结果,
Seconds 36
Minutes 21
Hours 7
Days 4
Run Code Online (Sandbox Code Playgroud)
哪里出错了?
Jon*_*eet 12
您应该使用a Period来确定涉及的月/日/等的数量:
Period period = new Period(start, end);
Run Code Online (Sandbox Code Playgroud)
将一个转换Interval为一个句点本来也可以,但是无参数重载包括所有句点单位 - 而且你没有打印出几个月.
现在,如果您只需要几天,几小时,几分钟,几秒钟,那么您需要创建一个合适的PeriodType,例如
PeriodType periodType = PeriodType.dayTime().withMillisRemoved();
Period period = new Period(start, end, periodType);
Run Code Online (Sandbox Code Playgroud)
然后你可以要求那些单独的领域,一切都应该很好.
(你实际上可以使用dayTime(),因为millis不会干扰任何其他事情.)
所以,你可以直接从建立你的时期start,并end为以上,或者如果你想保留的Interval,你可以使用:
Period period = interval.toPeriod(periodType);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1839 次 |
| 最近记录: |