Java LocalDate atStartOfDay 方法与时区

JavaJavaBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

介绍

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL java(("Java")) -.-> java/BasicSyntaxGroup(["Basic Syntax"]) java(("Java")) -.-> java/ObjectOrientedandAdvancedConceptsGroup(["Object-Oriented and Advanced Concepts"]) java(("Java")) -.-> java/ConcurrentandNetworkProgrammingGroup(["Concurrent and Network Programming"]) java(("Java")) -.-> java/FileandIOManagementGroup(["File and I/O Management"]) java(("Java")) -.-> java/SystemandDataProcessingGroup(["System and Data Processing"]) java/BasicSyntaxGroup -.-> java/output("Output") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/classes_objects("Classes/Objects") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/packages_api("Packages / API") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/date("Date") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/format("Format") java/FileandIOManagementGroup -.-> java/files("Files") java/FileandIOManagementGroup -.-> java/io("IO") java/ConcurrentandNetworkProgrammingGroup -.-> java/working("Working") java/SystemandDataProcessingGroup -.-> java/system_methods("System Methods") subgraph Lab Skills java/output -.-> lab-117772{{"Java LocalDate atStartOfDay 方法与时区"}} java/classes_objects -.-> lab-117772{{"Java LocalDate atStartOfDay 方法与时区"}} java/packages_api -.-> lab-117772{{"Java LocalDate atStartOfDay 方法与时区"}} java/date -.-> lab-117772{{"Java LocalDate atStartOfDay 方法与时区"}} java/format -.-> lab-117772{{"Java LocalDate atStartOfDay 方法与时区"}} java/files -.-> lab-117772{{"Java LocalDate atStartOfDay 方法与时区"}} java/io -.-> lab-117772{{"Java LocalDate atStartOfDay 方法与时区"}} java/working -.-> lab-117772{{"Java LocalDate atStartOfDay 方法与时区"}} java/system_methods -.-> lab-117772{{"Java LocalDate atStartOfDay 方法与时区"}} end

创建一个 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) 方法,将起始时间与指定日期结合,基于时区获取带时区的日期时间。你还学习了如何获取指定日期的带时区日期时间,并使用系统的默认时区。