【发布时间】:2014-01-08 16:42:56
【问题描述】:
在实践中,以下两个日期有什么区别?
Date date = new Date();Date date = Calendar.getInstance().getTime();
我的理解是 new Date() 是基于 UTC/GMT 的日期,而日历的 getTime() 基于 TimeZone 和系统时间。我对吗?我还想念什么吗?
另外,如果我上面的理解是正确的,我能说下面两个函数的最终结果是完全一样的吗?
1.
public String getDate1(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//I set the time zone & pass the new Date()
sdf.setTimeZone(TimeZone.getDefault());
return sdf.format(new Date());
}
2.
public String getDate2(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//I didn't set the time zone because I think calendar instance will handle timezone change
return sdf.format(Calendar.getInstance().getTime());
}
如果您能指出我理解错误的地方并清楚地向我解释,我将不胜感激。因为我觉得这件事让我很困惑。谢谢!
【问题讨论】:
-
尝试时会发生什么?提示: Date 没有任何时区,无论您以何种方式获取它的实例。其他提示:无论时区是什么,当前时刻就是当前时刻。
-
日期/日历令人困惑,因为它们的类设计和实现都很差。省去麻烦,避免使用这些类并改用像样的库:(a) Joda-Time 或 (b) 与 Java 8 捆绑在一起并取代 java.util.Date/ 的新 JSR 310: Date and Time API java.time.* 类日历混乱。
标签: java date calendar timezone