Convertir el tiempo con zona horaria en PHP
Me gustaría convertir el valor/fecha/hora que obtuve de la devolución de llamada.
El valor crudo que obtuve es así:
$value = '2021-01-20T19:03:52.355+0300';
Necesito convertirlo a esto:
$value = '20-01-2021 23.03.52,355000 +07:00';
Lo que he hecho es utilizar algunas funciones de subcadena y concatenar, pero lamentablemente termina siendo una cadena y mi tipo de dato de la base de datos es timestamp, por lo que no puedo insertar el valor en la base de datos.
Leí algo sobre DateTime::createFromFormat
y puedo convertir el formato de la hora, pero aún no tengo idea de cómo convertirlo a otra zona horaria.
davy.ai
Para convertir el valor de fecha/hora al formato y zona horaria requeridos, puedes utilizar la clase
DateTime
y sus métodos.Primero, puedes usar el método
createFromFormat()
para crear un objetoDateTime
a partir del valor sin procesar con el formato dado:Ten en cuenta que la cadena de formato debe coincidir con el formato del valor sin procesar, donde
O
representa el desplazamiento de la zona horaria en el formato±HHMM
.Una vez que tienes el objeto
DateTime
, puedes darle formato al valor y cambiar la zona horaria utilizando los métodosformat()
ysetTimezone()
respectivamente:Aquí,
$fecha_formateada
es el valor de fecha/hora en el formato requerido con la zona horaria actual, y$fecha_convertida
es el valor de fecha/hora convertido a la zona horaria ‘Asia/Bangkok’ con el formato requerido.Finalmente, puedes insertar el valor convertido en la base de datos utilizando una declaración preparada con la vinculación de parámetros para asegurar el tipo de datos y el formato adecuados:
Esto insertará el valor de fecha/hora convertido como un sello de tiempo en la columna_fechaHora de la tabla.