Différentes classes sont préparées pour le type de date et d'heure java8, Bien qu'il soit multifonctionnel, il est difficile à utiliser (le calendrier japonais peut être géré avec JapaneseDate, mais il n'a pas d'informations sur l'heure, etc.), donc J'ai pensé à une méthode utilitaire qui génère une date et une heure arbitraires dans un format arbitraire.
DateTimeFormat.java
import java.time.LocalTime;
import java.time.chrono.ChronoLocalDateTime;
import java.time.chrono.JapaneseDate;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoField;
import java.time.temporal.ChronoUnit;
import java.util.Locale;
import java.util.function.Function;
@SuppressWarnings("javadoc")
public class DateTimeFormat {
public static String dateTimeFormat(String format) {
return dateTimeFormat(format, Function.identity());
}
public static String dateTimeFormat(String format, Function<ChronoLocalDateTime<JapaneseDate>, ChronoLocalDateTime<JapaneseDate>> modify) {
return modify.apply(JapaneseDate.now().atTime(LocalTime.now())).format(DateTimeFormatter.ofPattern(format, Locale.JAPAN));
}
public static void main(String[] __) {
//Date et heure actuelles
System.out.println(dateTimeFormat("uuuu/MM/dd(E) HH:mm:ss"));
System.out.println(dateTimeFormat("Gy année M mois j jour(EEEE)H heures m minutes s secondes"));
System.out.println(dateTimeFormat("GGGGGy.M.d"));
//Dernier jour de ce mois
System.out.println(dateTimeFormat("uuuu/MM/dd(E)", d -> d.with(ChronoField.DAY_OF_MONTH, d.toLocalDate().lengthOfMonth())));
//Après une semaine
System.out.println(dateTimeFormat("Gy année M mois j jour(E)", d -> d.plus(7, ChronoUnit.DAYS)));
//1er mois prochain
System.out.println(dateTimeFormat("GGGGGy.M.d", d -> d.with(ChronoField.DAY_OF_MONTH, 1).plus(1, ChronoUnit.MONTHS)));
}
}
Résultat d'exécution
2017/06/15(bois) 11:30:05
15 juin 2017(Jeudi)11:30:05
H29.6.15
2017/06/30(Argent)
22 juin 2017(bois)
H29.7.1
Recommended Posts