Почему java.time.Clock содержит информацию о зоне? - PullRequest
0 голосов
/ 28 ноября 2018

Почему java.time.Clock имеет информацию о зоне?Из часов вы можете получить Instant только при вызове метода instant() - это время без информации о зоне.

Единственная цель, чтобы зона была доступна в часах, например, для создания ZonedDateTimeкак это?ZonedDateTime.ofInstant(clock().instant(), clock().getZone())

Не имеет ли тогда смысл иметь метод zonedDateTime() в классе Clock?

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Полагаю, что для того, чтобы ответить на ваш вопрос, нужно немного почитать или угадать, но позвольте мне все равно попробовать.Насколько я вижу, Clock, знающий часовой пояс, очень удобен при использовании любого из now методов, принимающих аргумент Clock.Ни один из следующих методов не может работать правильно, если Clock не может предоставить часовой пояс:

Список может быть неполным.Только Instant.now(Clock) не нуждается в часовом поясе и игнорирует часовой пояс Clock.

И да, альтернативный дизайн, где Clock имел метод zonedDateTimeпредоставление того же результата, что и ZonedDateTime.now(Clock), также имело бы смысл.Однако: тот, кто хочет разработать, скажем, класс JewishDate, никогда не сможет вставить метод jewishDate в класс Clock.С существующим дизайном они могут проектировать свой класс JewishDate точно так же, как существующие классы даты и времени, включая метод JewishDate.now(Clock).

0 голосов
/ 28 ноября 2018

Альтернативное поведение часов

Цитирование документации Clock (выделено мной):

Использование часов необязательно.Все ключевые классы даты и времени также имеют фабричный метод now (), который использует системные часы в часовом поясе по умолчанию. Основная цель этой абстракции состоит в том, чтобы позволить подключать альтернативные часы по мере необходимости .Приложения используют объект для получения текущего времени, а не статический метод.Это может упростить тестирование.

Например, Clock.fixed( Instant fixedInstant, ZoneId zone ) всегда сообщает текущий момент как определенный момент, фиксированный (неизменяемый) момент времени.

...