java - 使用 Joda-Time 倒数圣诞节

标签 java datetime time jodatime countdown

我正在尝试实现 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(),因为毫秒不会干扰其他任何东西。)

所以你可以直接从 startend 建立你的周期,或者如果你想保留 Interval,你可以使用:

Period period = interval.toPeriod(periodType);

关于java - 使用 Joda-Time 倒数圣诞节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11118262/

相关文章:

r - 变量 X 的类型(列表)无效,其中 X 是日期类

python - 如何将日期时间转换为正确的格式以使用 pytz 模块

go - 使用默认时间Golang调用func

java - 使用 Jackson 将 XML 转换为 Map,Key 应小写

java - 带 Struts 1 的动态 URL

java - Log4j 无法读取配置文件 SELENIUM JAVA

java - Java中同步集合类和非同步集合类有什么区别?

java - C# 和 Java 将 DateTime 转换为字节数组时的区别

python 用时区解析日期时间

javascript - 如何获取react-datetime日期?