Buscando usar una polipíldora para javascript temporal.
Si tengo Temporal.now, ¿cómo lo ajusto a la octava hora de hoy, por ejemplo? ¿Analizaré las propiedades y crearé un nuevo ZonedDateTime o hay una mejor manera?
En general, use el método with() . Crea un nuevo Temporal.ZonedDateTime que es una copia del original, pero cualquier propiedad presente en el argumento del método anula las que ya están presentes en el original.
Entonces, si ya tiene un objeto zdt y quiere que la hora sea 8, use
zdt.with({ hour: 8 }) // eg 2022-03-13T08:55:59.853514471-07:00[America/Vancouver] Aunque, no estaba seguro de su descripción si esto es exactamente lo que quiere; es posible que obtenga hoy a las 08:55:59 algo, como arriba. Si desea que la hora sea las 8 en punto, use el método withPlainTime() , que crea un nuevo objeto y reemplaza todas las propiedades relacionadas con la hora a la vez:
zdt.withPlainTime({ hour: 8 }) // eg 2022-03-13T08:00:00-07:00[America/Vancouver] o, si literalmente quiere la octava hora de hoy, tenga en cuenta que técnicamente no siempre son las 08:00, por ejemplo, si su zona horaria tiene una transición de horario de verano ese día (como en este ejemplo, America/Vancouver lo hizo en 2022- 03-13; el reloj se adelantó una hora durante la noche). Aunque esto parece menos probable que las otras dos posibilidades, si lo que necesita es la octava hora del día, use el método startOfDay() * y add() 8 horas:
zdt.startOfDay().add({ hours: 8 }) // eg 2022-03-13T09:00:00-07:00[America/Vancouver]*actualmente descrito en la documentación como una propiedad de solo lectura, pero eso es un error