【问题标题】:Is Date() method uses time for the Object Creation in Java? [closed]Date() 方法是否使用时间在 Java 中创建对象? [关闭]
【发布时间】:2013-12-04 16:35:41
【问题描述】:

我对使用 Date() 方法创建 Date 对象有疑问。在创建 Date() 对象时,是否需要从系统获取本地时间?

【问题讨论】:

标签: java datetime


【解决方案1】:

是的。

来自 Javadoc:

日期()

分配一个 Date 对象并初始化它,以便它 表示它被分配的时间,精确到 毫秒。

但是,众所周知,java.util.Date 不被重视。大多数人会建议您改用Joda-Time's LocalDate。

【讨论】:

  • 如果您忽略不推荐使用的内容,那么 java.util.Date 有什么不好?对我来说效果很好。
  • this thread 或有一个谷歌。几位著名的 Java 设计师/博主详细讨论了这个话题。或者,阅读 Joda 简介 here
【解决方案2】:

我对是否是当地时间的问题的回答是否定的。

我们必须区分:Date() 无参数构造函数基于 System.currentTimeMillis(),它是自 UNIX 纪元以来毫秒的全局相等表示(不计算闰秒)。这个计数在地球上的任何地方都提供相同的、正确的操作系统时钟设置。 => 因此没有当地时间

但请注意,java.util.Date 通过 toString() 的表示是本地的,这意味着依赖于 jvm 的默认时区设置。这是由 java.util.Date 引起的许多突出的混淆示例之一。

【讨论】:

  • 正确答案提出了一个非常重要的观点:内部存储的内容和呈现给用户的内容是两件不同的事情。这就是为什么我们在 j.u.Date/Calendar 和 Joda-Time 两个世界中应用时区和语言环境进行渲染的原因
猜你喜欢
  • 1970-01-01
  • 2014-01-06
  • 1970-01-01
  • 2012-04-26
  • 2014-01-07
  • 1970-01-01
  • 1970-01-01
  • 2018-04-18
  • 2021-01-16
相关资源
最近更新 更多