Рубрики
Без рубрики

Java 8 – Примеры временных настроек

– Java 8 – Примеры временных настроек

В Java 8 вы можете использовать предопределенный java.time.temporal. Временные настройки для корректировки даты или Временной

1. Временные регуляторы

Пример переноса даты на первый день месяца, первый день следующего месяца, следующий понедельник и т. Д.

package com.mkyong.time;

import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.temporal.TemporalAdjusters;

public class TestDate {

    public static void main(String[] args) {

        LocalDate localDate = LocalDate.now();
        System.out.println("current date : " + localDate);

        LocalDate with = localDate.with(TemporalAdjusters.firstDayOfMonth());
        System.out.println("firstDayOfMonth : " + with);

        LocalDate with1 = localDate.with(TemporalAdjusters.lastDayOfMonth());
        System.out.println("lastDayOfMonth : " + with1);

        LocalDate with2 = localDate.with(TemporalAdjusters.next(DayOfWeek.MONDAY));
        System.out.println("next monday : " + with2);

        LocalDate with3 = localDate.with(TemporalAdjusters.firstDayOfNextMonth());
        System.out.println("firstDayOfNextMonth : " + with3);

    }

}

Выход

current date : 2016-11-15
firstDayOfMonth : 2016-11-01
lastDayOfMonth : 2016-11-30
next monday : 2016-11-21
firstDayOfNextMonth : 2016-12-01

2. Пользовательский временный регулятор

Пример для реализации TemporalAdjuster чтобы перенести дату на следующее Рождество.

package com.mkyong.time;

import java.time.temporal.ChronoField;
import java.time.temporal.Temporal;
import java.time.temporal.TemporalAdjuster;

public class NextChristmas implements TemporalAdjuster {

    @Override
    public Temporal adjustInto(Temporal temporal) {

        return temporal.with(ChronoField.MONTH_OF_YEAR, 12).with(ChronoField.DAY_OF_MONTH, 25);

    }
}
package com.mkyong.time;

import java.time.LocalDate;

public class TestDate {

    public static void main(String[] args) {

        LocalDate localDate = LocalDate.now();
        System.out.println("current date : " + localDate);

        localDate = localDate.with(new NextChristmas());
        System.out.println("Next Christmas : " + localDate);

    }

}

Выход

current date : 2016-11-15
Next Christmas : 2016-12-25

В качестве альтернативы вы можете использовать следующее лямбда-выражение:

	localDate = localDate.with(
		temporal -> temporal.with(ChronoField.MONTH_OF_YEAR, 12).with(ChronoField.DAY_OF_MONTH, 25)
	);

Рекомендации

  1. Java 8 – ХиджраХдат, Как рассчитать дату Рамадана
  2. Временная настройка javadoc
  3. Временные настройщики javadoc
  4. Временной JavaDoc
  5. Википедия Рождество

Оригинал: “https://mkyong.com/java8/java-8-temporaladjusters-examples/”