¿Deberían el servidor o el cliente manejar la zona horaria al enviar / recibir fechas?

Entiendo que la mejor práctica es almacenar la fecha / hora UTC en nuestra base de datos y mostrarla al usuario en su zona horaria local. Almacenaremos la zona horaria en lugar del desplazamiento para que podamos soportar el horario de verano.

¿Qué forma es mejor para manejar zonas horarias?

Opción 1: el servidor solo habla UTC y el cliente convierte a la zona horaria

Todas las fechas enviadas al navegador en HTML están en UTC. El lado del cliente convertirá la hora UTC a la zona horaria correcta usando moment.js o similar. Se usaría la zona horaria especificada en nuestra base de datos en lugar de la hora local del navegador, ya que puede ser incorrecto.

Cuando el usuario envía una fecha u hora, primero debe convertirse a una hora UTC antes de enviarla al servidor.

Opción 2: el servidor se convierte en zona horaria

Todos los cálculos aún se realizan en UTC y la fecha / hora se convierte a la zona horaria correcta en el último momento posible, por ejemplo, al generar la fecha en HTML.

Cuando el cliente envía cualquier fecha / hora, debe convertirse inmediatamente a UTC.

¿Hay otra manera?

Respuestas a la pregunta(1)

Su respuesta a la pregunta