gpt4 book ai didi

java - Calendar.getTime() 返回不同的 Date 对象

转载 作者:行者123 更新时间:2023-12-01 13:37:19 24 4
gpt4 key购买 nike

我有一些代码使用日历将 Joda- DateTime 转换为 java.util.Date。

 Calendar cal = Calendar.getInstance(zone.toTimeZone());
DateTime zonedDT = internal.toDateTime(zone);
// Due to JDK and Joda-Time both have time zone implementations and these differ in accuracy.
// Joda-Time's implementation is generally more up to date and thus more accurate - for example JDK1.3 has no historical data.
// The effect of this is that the field values of the Calendar may differ from those of this object, even though the millisecond value is the same.
// Most of the time this just means that the JDK field values are wrong, as our time zone information is more up to date
// That's why we should manually set date,year, time to calendar
cal.set(zonedDT.getYear(), zonedDT.getMonthOfYear() - 1, zonedDT.getDayOfMonth(), zonedDT.getHourOfDay(), zonedDT.getMinuteOfHour(), zonedDT.getSecondOfMinute());
return cal.getTime();

问题在于,以这种方式创建的 Date 实例之间存在以毫秒为单位的差异。

我在 Intellij Idea 中尝试使用代码 Framgent 评估此代码

Calendar cal = Calendar.getInstance();
cal.set(2014,3,18,14,44,32);
cal.getTime()

它返回不同的日期。差异以毫秒为单位。
我的操作系统是Windwos。
jdk 1.7.0_25

最佳答案

添加一行如下:

cal.set(Calendar.MILLISECOND, 0);

将设置毫秒值。 API 文档指定该字段如下:

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

因此它不提供设置毫秒的粒度。

旁注:

如果您使用 Java 日期库结帐 Jodatime:http://www.joda.org/joda-time/好多了!

关于java - Calendar.getTime() 返回不同的 Date 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21166156/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com