2021-04-18 11:35  阅读(58)
文章分类:Java 基础教程 文章标签:JavaJava 教程
©  原文作者:w3cschool 原文地址:https://www.w3cschool.cn/java/java-date-time-methods.html

Java日期时间调整器

我们可能要将日期和时间调整为该月的第一个星期一或下一个星期二。

我们可以使用TemporalAdjuster界面来调整日期和时间。接口有一个方法,adjustInto(),它接受一个时间并返回一个时间。

TemporalAdjusters类包含返回不同类型的预定义日期调整器的静态方法。

以下代码显示了如何计算2014年1月1日之后的第一个星期一:

    import java.time.DayOfWeek;
    import java.time.LocalDate;
    import java.time.Month;
    import java.time.temporal.TemporalAdjusters;
    
    public class Main {
    
      public static void main(String[] args) {
        LocalDate ld1  = LocalDate.of(2014, Month.JANUARY,  1);
        LocalDate ld2  = ld1.with(TemporalAdjusters.next(DayOfWeek.MONDAY)); 
        System.out.println(ld1);
        System.out.println(ld2);
    
      }
    }
    

上面的代码生成以下结果。

2021041811314_1.png

TemporalAdjusters

TemporalAdjusters定义了一些可用于调整日期的有用方法。

  • next(DayOfWeek dayOfWeek)
  • nextOrSame(DayOfWeek dayOfWeek)
  • previous(DayOfWeek dayOfWeek)
  • previousOrSame(DayOfWeek dayOfWeek)
  • firstInMonth(DayOfWeek dayOfWeek)
  • lastInMonth(DayOfWeek dayOfWeek)
  • dayOfWeekInMonth(int ordinal, DayOfWeek dayOfWeek)
  • firstDayOfMonth()
  • lastDayOfMonth()
  • firstDayOfYear()
  • lastDayOfYear()
  • firstDayOfNextMonth()
  • firstDayOfNextYear()
  • ofDateAdjuster(UnaryOperator<LocalDate> dateBasedAdjuster)

以下代码显示了如何使用dayOfWeekInMonth

    import java.time.DayOfWeek;
    import java.time.LocalDate;
    import java.time.Month;
    import java.time.temporal.TemporalAdjusters;
    
    public class Main {
    
      public static void main(String[] args) {
        LocalDate ld1  = LocalDate.of(2014, Month.MAY,  21);
        System.out.println(ld1);
        LocalDate ld2  = ld1.with(TemporalAdjusters.dayOfWeekInMonth(5, DayOfWeek.SUNDAY));
        System.out.println(ld2);
      }
    }
    

上面的代码生成以下结果。

2021041811313_2.png

自定义调整

您可以使用ofDateAdjuster()方法为LocalDate创建自己的日期调整器。

以下代码创建日期调整程序。

    import java.time.LocalDate;
    import java.time.temporal.TemporalAdjuster;
    import java.time.temporal.TemporalAdjusters;
    
    public class Main {
    
      public static void main(String[] args) {
        // Create an adjuster that retruns a date after 3 months and 2 days
        TemporalAdjuster adjuster = TemporalAdjusters
            .ofDateAdjuster((LocalDate date) -> date.plusMonths(3).plusDays(2));
    
        LocalDate today = LocalDate.now();
        LocalDate dayAfter3Mon2Day = today.with(adjuster);
        System.out.println("Today: " + today);
        System.out.println("After 3  months  and  2  days: " + dayAfter3Mon2Day);
    
      }
    }
    

上面的代码生成以下结果。

2021041811313_3.png

点赞(0)
版权归原创作者所有,任何形式转载请联系作者; Java 技术驿站 >> Java 日期时间调整器
上一篇
Java Chrono现场单元
下一篇
Java 日期时间查询