日期类

表示

在内部,Java Date 对象表示为 long; 它是自特定时间(称为纪元 ) 以来的毫秒数。原始的 Java Date 类具有处理时区等的方法,但这些方法已被弃用,以支持当时新的 Calendar 类。

因此,如果你想要在代码中执行的操作代表特定时间,则可以创建 Date 类并存储它等。但是,如果要打印出该日期的人类可读版本,则可以创建 Calendar 类并使用其格式来生成小时,分钟,秒,天,时区等。请记住,特定毫秒在不同时区显示为不同的小时数; 通常你想在本地时区显示一个,但格式化方法必须考虑到你可能想要为其他一些显示它。

另请注意,JVM 使用的时钟通常不具有毫秒精度; 时钟可能每 10 毫秒只能滴答一次,因此,如果计时,你不能依赖于在那个级别准确测量事物。

导入声明

import java.util.Date;

Date 类可以从 java.util 包中导入。

警告

Date 实例是可变的,因此使用它们会使编写线程安全的代码变得困难,或者可能意外地提供对内部状态的写访问。例如,在下面的类中,getDate() 方法允许调用者修改事务日期:

public final class Transaction {
  private final Date date;

  public Date getTransactionDate() {
    return date;
  }
}

解决方案是返回 date 字段的副本或使用 Java 8 中引入的 java.time 中的新 API。

Date 类中的大多数构造函数方法已被弃用,不应使用。几乎在所有情况下,建议使用 Calendar 类进行日期操作。

Java 8

Java 的 8 引入了新的时间和日期 API 的封装 java.time,包括 LOCALDATE 的本地时间java.time 包中的类提供了一个易于使用的大修 API。如果你正在编写 Java 8,强烈建议你使用此新 API。请参阅日期和时间(java.time。*)