Für den Datums- und Uhrzeittyp von Java8 werden verschiedene Klassen vorbereitet. Obwohl es multifunktional ist, ist es schwierig zu verwenden (der japanische Kalender kann mit JapaneseDate verarbeitet werden, enthält jedoch keine Zeitinformationen usw.) Ich dachte an eine Dienstprogrammmethode, die ein beliebiges Datum und eine beliebige Uhrzeit in einem beliebigen Format ausgibt.
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[] __) {
//Aktuelles Datum und Uhrzeit
System.out.println(dateTimeFormat("uuuu/MM/dd(E) HH:mm:ss"));
System.out.println(dateTimeFormat("Gy Jahr M Monat d Tag(EEEE)H Stunden m Minuten s Sekunden"));
System.out.println(dateTimeFormat("GGGGGy.M.d"));
//Letzter Tag dieses Monats
System.out.println(dateTimeFormat("uuuu/MM/dd(E)", d -> d.with(ChronoField.DAY_OF_MONTH, d.toLocalDate().lengthOfMonth())));
//Nach einer Woche
System.out.println(dateTimeFormat("Gy Jahr M Monat d Tag(E)", d -> d.plus(7, ChronoUnit.DAYS)));
//1. nächsten Monat
System.out.println(dateTimeFormat("GGGGGy.M.d", d -> d.with(ChronoField.DAY_OF_MONTH, 1).plus(1, ChronoUnit.MONTHS)));
}
}
Ausführungsergebnis
2017/06/15(Holz) 11:30:05
15. Juni 2017(Donnerstag)11:30:05
H29.6.15
2017/06/30(Geld)
22. Juni 2017(Holz)
H29.7.1
Recommended Posts