No estoy seguro de lo que estoy haciendo mal. Tengo una aplicación laravel 8 donde almaceno mi tiempo en UTC con timestamp_no_timezone en postgresql. Cuando veo la hora en la base de datos, muestra la fecha de hoy con las 13:45 como hora. Cuando uso vue-moment y muestro la hora con la zona horaria configurada en America/New_York, todavía se muestra la 1:45 p. m. y deberían ser las 8:45 a. m. con el desplazamiento. ¿Qué me podría estar perdiendo? Incluso hice un console.log de la zona horaria desde el momento y muestra America/New_York.
Esta es la expresión que estoy usando:
{{ [ timesheet.start, "YYYY-MM-DD HH:mm:ss" ] | moment("timezone", "America/New_York", "h:mm A") }}
Convierta la fecha y hora almacenada en época mientras envía en respuesta.
Cómo puede convertir dateTime a epoch hay muchas maneras (envíe dateTime en epoch en respuesta).
Agrega tu modelo
protected $casts = ['datetime_field' => 'timestamp']agregue este método en la clase Laravel desde donde está enviando la respuesta
protected function toEpoch($datetime ) { if (gettype($datetime) == 'string') { $datetime = new DateTime($datetime); return Carbon::instance($datetime)->format('U'); } else if ($datetime instanceof Carbon) { return $datetime->format('U'); } else if ($datetime != null) { return Carbon::instance($datetime)->format('U'); } } }en proyecto vue
{{new Date(epoch*1000)}}