package rmblworx.tools.timey.gui; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; /* * Copyright 2014-2015 Christian Raue * MIT License http://opensource.org/licenses/mit-license.php */ /** * Hilfsmethoden zum Umgang mit Datum/Zeit-Werten. * @author Christian Raue {@literal <christian.raue@gmail.com>} */ public final class DateTimeUtil { public static final long MILLI_TO_NANO = 1000L * 1000L; private static final String PATTERN_DATE_TIME = "dd.MM.yyyy HH:mm:ss"; private static final String PATTERN_DATE = "dd.MM.yyyy"; private static final String PATTERN_TIME = "HH:mm:ss"; /** * @param dateTime Datum-/Zeit-Wert * @return Datumsanteil */ public static LocalDate getDatePart(final LocalDateTime dateTime) { return dateTime.toLocalDate(); } /** * @param dateTime Datum-/Zeit-Wert * @return Zeitanteil */ public static LocalTime getTimePart(final LocalDateTime dateTime) { return dateTime.toLocalTime(); } /** * @param string Datum/Zeit-Wert * @return {@link LocalDateTime}-Objekt mit entsprechendem Datum/Zeit-Wert */ public static LocalDateTime getLocalDateTimeForString(final String string) { return LocalDateTime.parse(string, DateTimeFormatter.ofPattern(PATTERN_DATE_TIME)); } /** * @param string Datum-Wert * @return {@link LocalDate}-Objekt mit entsprechendem Datum-Wert */ public static LocalDate getLocalDateForString(final String string) { return LocalDate.parse(string, DateTimeFormatter.ofPattern(PATTERN_DATE)); } /** * @param string Zeit-Wert * @return {@link LocalTime}-Objekt mit entsprechendem Zeit-Wert */ public static LocalTime getLocalTimeForString(final String string) { return LocalTime.parse(string, DateTimeFormatter.ofPattern(PATTERN_TIME)); } /** * @param dateTime Datum/Zeit-Wert * @return UTC-basierter Datum/Zeit-Wert in ms */ public static long getLocalDateTimeInMillis(final LocalDateTime dateTime) { return LocalDateTime.of(1970, 1, 1, 0, 0, 0).until(dateTime, ChronoUnit.MILLIS); } /** * @param millis UTC-basierter Datum/Zeit-Wert in ms * @return Datum/Zeit-Wert */ public static LocalDateTime getLocalDateTimeFromMillis(final long millis) { return LocalDateTime.of(1970, 1, 1, 0, 0, 0).plus(millis, ChronoUnit.MILLIS); } /** * Instanziierung verhindern. */ private DateTimeUtil() { } }