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)

哪个是毫秒的字段.

相关文章

应用场景 C端用户提交工单、工单创建完成之后、会发布一条工...
线程类,设置有一个公共资源 package cn.org.chris.concurre...
Java中的数字(带有0前缀和字符串)
在Java 9中使用JLink的目的是什么?
Java Stream API Filter(过滤器)
在Java中找到正数和负数数组元素的数量