diff --git a/src/main/java/com/example/nto/utils/DataFormatType.java b/src/main/java/com/example/nto/utils/DataFormatType.java new file mode 100644 index 0000000..0c3e92d --- /dev/null +++ b/src/main/java/com/example/nto/utils/DataFormatType.java @@ -0,0 +1,5 @@ +package com.example.nto.utils; + +public enum DataFormatType { + DATE_TIME, DATE, TIME +} diff --git a/src/main/java/com/example/nto/utils/Utils.java b/src/main/java/com/example/nto/utils/Utils.java new file mode 100644 index 0000000..dc7162e --- /dev/null +++ b/src/main/java/com/example/nto/utils/Utils.java @@ -0,0 +1,52 @@ +package com.example.nto.utils; + +import lombok.experimental.UtilityClass; + +import java.time.*; +import java.time.format.DateTimeFormatter; +import java.util.List; +import java.util.UUID; + +@UtilityClass +public class Utils { + private static final DateTimeFormatter DATE_TIME_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); + private static final DateTimeFormatter DATE_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd"); + private static final DateTimeFormatter TIME_FORMAT = DateTimeFormatter.ofPattern("HH:mm:ss"); + + public static String profileFileName(long userId) { + return "profile--" + userId; + } + + public static String generateUniqueName() { + return UUID.randomUUID().toString(); + } + + public static String nowTime(DataFormatType type) { + switch (type) { + case DATE_TIME: return LocalDateTime.now().format(DATE_TIME_FORMAT); + case DATE: return LocalDateTime.now().format(DATE_FORMAT); + case TIME: return LocalDateTime.now().format(TIME_FORMAT); + default: return "Произошла ошибка при форматировании даты или времени."; + } + } + public static LocalDateTime period(LocalDateTime dtStart, LocalDateTime dtEnd) { + // Возвращает разницу между двумя LocalDateTime + Period period = Period.between(dtStart.toLocalDate(), dtEnd.toLocalDate()); + Duration duration = Duration.between(dtStart.toLocalTime(), dtEnd.toLocalTime()); + + LocalDate localDate = LocalDate.of(period.getYears(), period.getMonths(), period.getDays()); + LocalTime localTime = LocalTime.of(duration.toHoursPart(), duration.toMinutesPart(), duration.toSecondsPart()); + + return LocalDateTime.of(localDate, localTime); + } + + public static long periods(List> periods) { + // Количество часов за определенные периоды. + long hours = 0; + for (List period : periods) { + if (period.size() != 2) throw new IllegalStateException("Список с периодом должен содержать 2 элемента!"); + hours += Duration.between(period.get(0), period.get(1)).toHours(); + } + return hours; + } +}