¿Por qué se java.time.Clock
tiene información de la zona? Desde el reloj sólo se puede obtener una Instant
cuando se llama al instant()
método - que es un momento sin información de zona.
Es el único propósito de tener la zona disponible en el reloj para por ejemplo crear un ZonedDateTime así? ZonedDateTime.ofInstant(clock().instant(), clock().getZone())
¿No sería entonces tiene sentido tener un método zonedDateTime()
en la clase de reloj?
comportamientos de reloj alternos
Citando la Clock
documentación (el énfasis es mío):
El uso de un reloj es opcional. Todas las clases principales de fecha y hora también tienen un método de fábrica ahora () que utiliza el reloj del sistema en la zona horaria predeterminada. El propósito principal de esta abstracción es permitir que los relojes alternas para ser enchufados como y cuando sea necesario . Las aplicaciones utilizan un objeto para obtener la hora actual en lugar de un método estático. Esto puede simplificar las pruebas.
Por ejemplo, Clock.fixed( Instant fixedInstant, ZoneId zone )
siempre informa el momento actual como un momento específico, un (no cambiantes) de punto fijo en el tiempo.