Tenemos una aplicación web que guarda todas las horas en “formato” UTC, pero para mostrarlas el cliente quiere que sea la hora de la franja horaria que sea en cada caso. No está pidiendo ninguna locura, pero como es la primera vez que me encuentro con esta tarea la quiero documentar.
Del back te llega una hora en UTC (GMT+0) y la quieres convertir a la hora en tu franja horaria. La cosa no. podría. ser. más. sencilla.
Creas un objeto date, lo inicializas con la hora del back añadiendo al final “UTC”, y cuando recuperas la hora del objeto, él mismo la ha transformado a la franja horaria del navegador.
Y si te sientes fancy puedes añadir, al mostrar la fecha, la franja en la que estás. En este trocito de ejemplo he usado DatePipe de Angular, pero vamos, que se puede formatear de cualquier forma que se quiera.
var date = new Date(value +' UTC');
return this.datePipe.transform(date, 'dd/MM/yy HH:mm (z)')
De esta forma, si la hora que viene del back es, por ejemplo, las 12:48, lo que se muestre por pantalla será:
(los paréntesis los he puesto yo en el formateo, y la franja horaria es la ‘z’. Si se quiere poner como ‘+0200’, en vez de minúscula se pone ‘Z’ mayúscula y ya está)
Y ya 😀
************************************************************
Espero que esta entrada pueda ser de utilidad, y si no, como siempre, aquí tenéis un gato para compensar.