java – 为什么JodaTime和Calendar返回不同的结果

前端之家收集整理的这篇文章主要介绍了java – 为什么JodaTime和Calendar返回不同的结果前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
为什么这个测试失败:
DateTime dateTime = new DateTime(1997,01,00,DateTimeZone.UTC);
    long jodaMills = dateTime.getMillis();

    Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
    cal.set(1997,00);
    long calMills = cal.getTimeInMillis();

    Assert.assertEquals(jodaMills,calMills);

我得到以下结果:
预计:852076800000
实际:854755200964

他们不应该是相同的数字吗?

解决方法

两个原因:

> Joda有一个月.所以你需要改变.
>日历设计不佳您没有将秒的毫秒设置为0. cal.set(MILLISECOND,0)

这是javadoc

public final void set(int year,
int month,
int date,
int hourOfDay,
int minute,
int second)

哪个是毫秒的字段.

原文链接:https://www.f2er.com/java/123585.html

猜你在找的Java相关文章