Java LocalDate atStartOfDay 方法与时区

JavaBeginner
立即练习

介绍

Java 的 atStartOfDay(ZoneId) 方法用于将指定日期与基于时区的起始时间(午夜时间)结合。该方法返回的是带时区的日期时间(zoned date-time),而不是本地日期时间(local date-time)。在本实验中,你将学习如何在 Java 中使用带时区的 atStartOfDay() 方法。

创建一个 Java 文件

首先,导航到 ~/project 目录,并使用以下命令创建一个名为 LocalDateStartOfDay.java 的新 Java 文件:

cd ~/project
touch LocalDateStartOfDay.java

然后,使用你喜欢的文本编辑器打开 LocalDateStartOfDay.java 文件。

导入必要的包

在这一步中,我们将导入必要的包以使用 LocalDateMonthZoneIdZonedDateTime 类。

import java.time.LocalDate;
import java.time.Month;
import java.time.ZoneId;
import java.time.ZonedDateTime;

从起始日期获取带时区的日期时间

在这一步中,我们将创建一个带有指定日期的 LocalDate 对象,然后使用 atStartOfDay() 方法从该日期获取特定时区的带时区日期时间。

// Getting a date
LocalDate localDate = LocalDate.of(2022, Month.APRIL, 15);

// Getting start time of the date
ZonedDateTime localDateTime = localDate.atStartOfDay(ZoneId.of("Asia/Kolkata"));

// Displaying date and time of start of the date
System.out.println("Date with start time: \n"+localDateTime);

从起始日期获取带系统默认时区的日期时间

在这一步中,我们将使用 atStartOfDay() 方法结合 ZoneId.systemDefault() 方法,从指定日期获取系统默认时区的带时区日期时间。

// Getting start time of the date with system default time zone
ZonedDateTime localDateTime = localDate.atStartOfDay(ZoneId.systemDefault());

// Displaying date and time of start of the date
System.out.println("Date with start time: \n"+localDateTime);

编译并运行 Java 程序

在这一步中,我们将在终端中使用以下命令编译并运行 Java 程序:

javac LocalDateStartOfDay.java && java LocalDateStartOfDay

查看输出结果

输出应如下所示,显示指定时区的日期及其起始时间。

Date with start time:
2022-04-15T00:00+05:30[Asia/Kolkata]
Date with start time:
2022-04-15T00:00+02:00[Europe/Paris]

总结

在本实验中,你学习了如何使用 Java 的 atStartOfDay(ZoneId) 方法,将起始时间与指定日期结合,基于时区获取带时区的日期时间。你还学习了如何获取指定日期的带时区日期时间,并使用系统的默认时区。