Java 中以毫秒为单位获取昨天的日期

10 Sept 2024 | 4 分钟阅读

有许多 Java 方法可以获取昨天日期的毫秒值。

方法 1:使用 java.util.Calendar

Java.util.Date 类和 Java.util.Calendar 类属于 Java 中遗留的日期和时间 API。尽管这些类在 Java 中仍然可用,但 Java 8 引入的 java.time 包在很大程度上取代了它们,并且不建议在新项目中使用它们。

以下是一个演示如何使用这些类获取昨天日期毫秒值的示例:

YesterdayData1.java

输出

Yesterday's date in milliseconds: 1680776986777

解释

在此代码中,我们首先导入 java.util.Calendar 和 java.util.Date 类。

在 main 函数中,我们首先使用 Date() 构造函数(该构造函数根据当前日期和时间创建一个新的 Date 对象)来获取当前日期和时间。

下一步是创建一个新的 Calendar 对象,并使用 setTime() 函数将其设置为当前日期。我们使用 add() 函数和 DAY_OF_YEAR 字段,值为 -1,从日历中减去一天。这会将日历上的日期更改为昨天。

接下来,我们使用 getTime() 函数将日历转换为 Date 对象,并将其添加到 yesterday 属性中。

方法 2:使用 java.time.LocalDate 和 java.time.ZoneOffset 类

Java 8 中用 Java.time 包替换了传统的日期和时间 API。ZoneOffset 类表示相对于 UTC 的固定时区偏移量,而 LocalDate 类表示不带时间和时区的日期(年、月、日)。

以下是一个演示如何使用这些类获取昨天日期毫秒值的示例:

YesterdayDate2.java

输出

Yesterday's date in milliseconds: 1680739200000

方法 3:使用 java.time.LocalDateTime 和 java.time.ZoneOffset 类

Java.time.ZoneOffset 类表示相对于 UTC 的固定时区偏移量,而 LocalDateTime 类表示不带时区的日期和时间。这种方法与第一种方法类似,只是用 LocalDateTime 替换了 LocalDate。

以下是一个演示如何使用这些类获取昨天日期毫秒值的示例:

YesterdayDate3.java

输出

Yesterday's date in milliseconds: 1680777396113

解释

在此代码中,我们首先导入 java.time.LocalDateTime 和 java.time.ZoneOffset 的类。接下来,我们开发了一个名为 Main 的新类。

在 main 函数中,我们首先使用 LocalDateTime.now() 方法和 UTC 时区偏移量获取 UTC 当前的日期和时间。

然后,通过从当前时间和日期减去一天来使用 minusDays() 函数获取昨天的日期和时间。

之后,我们将昨天的日期和时间转换为 Instant 对象(通过 toInstant() 方法和 UTC 时区偏移量),然后调用 toEpochMilli() 函数来获取自 epoch 以来的毫秒数。

最后,我们使用 System.out.println() 输出昨天的日期(以毫秒为单位)。

方法 4:使用 java.util.Calendar 和 java.util.TimeZone 类

与方法 1 类似,我们使用 TimeZone 类指定的时区。

以下是一个演示如何使用这些类获取昨天日期毫秒值的示例:

YesterdayDate4.java

结论

在本节中,我们讨论了各种 Java 方法来检索昨天的日期(以毫秒为单位)。这些方法使用了各种类和库,包括传统的 java.util.Date 和 java.util.Calendar 类,以及较新的 Java.time 包和 java.util.TimeZone 类。