Java LocalDate withDayOfYear 方法

JavaJavaBeginner
立即练习

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

介绍

在本实验中,我们将学习如何使用 Java LocalDate 类中的 withDayOfYear() 方法,通过指定新的年日值来创建一个日期。


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/FileandIOManagementGroup(["`File and I/O Management`"]) java(("`Java`")) -.-> java/SystemandDataProcessingGroup(["`System and Data Processing`"]) java/BasicSyntaxGroup -.-> java/output("`Output`") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/date("`Date`") java/ObjectOrientedandAdvancedConceptsGroup -.-> java/exceptions("`Exceptions`") java/FileandIOManagementGroup -.-> java/files("`Files`") java/SystemandDataProcessingGroup -.-> java/string_methods("`String Methods`") subgraph Lab Skills java/output -.-> lab-117860{{"`Java LocalDate withDayOfYear 方法`"}} java/date -.-> lab-117860{{"`Java LocalDate withDayOfYear 方法`"}} java/exceptions -.-> lab-117860{{"`Java LocalDate withDayOfYear 方法`"}} java/files -.-> lab-117860{{"`Java LocalDate withDayOfYear 方法`"}} java/string_methods -.-> lab-117860{{"`Java LocalDate withDayOfYear 方法`"}} end

创建 Java 文件

~/project 目录下创建一个文件 LocalDateWithDayOfYear.java,并写入以下代码:

import java.time.LocalDate;

public class LocalDateWithDayOfYear {
    public static void main(String[] args) {
        System.out.println("Original date: ");
        LocalDate localDate = LocalDate.of(2002, 01, 10);
        System.out.println(localDate);
    }
}

使用以下命令编译并运行代码:

javac LocalDateWithDayOfYear.java && java LocalDateWithDayOfYear

输出应显示原始日期:

Original date:
2002-01-10

使用 withDayOfYear() 设置新的年日值

要通过设置新的年日值来创建一个新日期,我们可以使用 withDayOfYear() 方法为日期设置新的年日值。

System.out.println(localDate); 行后添加以下代码:

// set day-of-year as 30
localDate = localDate.withDayOfYear(30);
System.out.println("New date with day-of-year set as 30: ");
System.out.println(localDate);

// set day-of-year as 300
localDate = localDate.withDayOfYear(300);
System.out.println("New date with day-of-year set as 300: ");
System.out.println(localDate);

使用以下命令编译并运行代码:

javac LocalDateWithDayOfYear.java && java LocalDateWithDayOfYear

输出应显示设置了新年日值的新日期:

Original date:
2002-01-10
New date with day-of-year set as 30:
2002-01-30
New date with day-of-year set as 300:
2002-10-27

处理无效日期

如果生成的日期无效,将会抛出异常。我们可以使用 try-catch 块来处理异常,如下所示:

try {
    // set day-of-year as 366 (invalid for non-leap year)
    localDate = localDate.withDayOfYear(366);
    System.out.println(localDate);
} catch (Exception e) {
    System.out.println("Invalid date: " + e.getMessage());
}

使用以下命令编译并运行代码:

javac LocalDateWithDayOfYear.java && java LocalDateWithDayOfYear

输出应显示无效日期异常的消息:

Original date:
2002-01-10
New date with day-of-year set as 30:
2002-01-30
New date with day-of-year set as 300:
2002-10-27
Invalid date: Invalid date 'DayOfYear 366' as '2002' is not a leap year

总结

在本实验中,我们学习了如何使用 Java LocalDate 类中的 withDayOfYear() 方法,通过设置新的年日值来创建日期。我们还学习了在设置新的年日值时如何处理无效日期异常。

您可能感兴趣的其他 Java 教程