Иногда нам трудно принять решение, использовать ли ZonedDateTime
или LocalDateTime
, когда мы хотим решить определенную проблему даты / времени.
Например, для данной эпохи мы хотел бы знать день недели.
Мы обнаруживаем, что можем выполнить sh эту задачу с помощью ZonedDateTime
или LocalDateTime
. Вот пример кода
import java.time.*;
public class Main {
public static void main(String[] args) {
long currentTimeMillis = System.currentTimeMillis();
// Yield correct result.
System.out.println("useLocalDateTime -> " + useLocalDateTime(currentTimeMillis));
// Also yield correct result.
System.out.println("useZonedDateTime -> " + useZonedDateTime(currentTimeMillis));
}
public static DayOfWeek useLocalDateTime(long currentTimeMillis) {
LocalDateTime localDateTime = LocalDateTime.ofInstant(
Instant.ofEpochMilli(currentTimeMillis),
ZoneId.systemDefault()
);
DayOfWeek dayOfWeek = localDateTime.getDayOfWeek();
return dayOfWeek;
}
public static DayOfWeek useZonedDateTime(long currentTimeMillis) {
ZonedDateTime zonedDateTime = Instant.ofEpochMilli(currentTimeMillis).atZone(ZoneId.systemDefault());
DayOfWeek dayOfWeek = zonedDateTime.getDayOfWeek();
return dayOfWeek;
}
}
В приведенном выше случае лучше использовать ZonedDateTime
или LocalDateTime
? Есть ли какие-нибудь рекомендации, чтобы мы могли выбрать правильный класс в качестве инструмента?
У меня всегда создается впечатление, что ZonedDateTime
более «многофункциональный», чем LocalDateTime
. Все, что может быть выполнено с помощью LocalDateTime
, может быть выполнено и с помощью ZonedDateTime
, но не наоборот. Следовательно, если я застрял в выборе, я буду использовать по умолчанию от go до ZonedDateTime
. Это правильная концепция?