Fecha y hora en formato de 24 horas

3 minutos de lectura

Tengo una fecha en este formato. Fri, 15 Jan 2016 15:14:10 +0800y quiero mostrar el tiempo así 2016-01-15 15:14:10.

Lo que probé es:

$test="Fri, 15 Jan 2016 15:14:10 +0800";
$t = date('Y-m-d G:i:s',strtotime($test));
echo $t;

Pero está mostrando la fecha en este formato: 2016-01-15 7:14:10debería ser 2016-01-15 15:14:10.

¿Cómo puedo hacer esto?

  • ¿Cuál es la configuración de la zona horaria en su servidor?

    – Marcos Baker

    1 de febrero de 2016 a las 9:37

avatar de usuario de rdiz
rdiz

Usar H en cambio:

$test="Fri, 15 Jan 2016 15:14:10 +0800";
$t = date('Y-m-d H:i:s',strtotime($test));
echo $t;

H: formato de 24 horas de una hora con ceros iniciales del 00 al 23

G debería ser el mismo, pero sin ceros a la izquierda. Sospecho que su PHP está configurado en una zona horaria diferente a la +0800. ¿Puedes confirmar tu zona horaria (date_default_timezone_get())?

EDITAR

OP confirmó que su zona horaria estaba configurada en UTC, en cuyo caso enmascara el sentido perfecto de que muestra las 7 de la mañana, como date utiliza la zona horaria predeterminada de PHP.

Si desea “heredar” la zona horaria, mientras obtiene más flexibilidad, debe cambiar a DateTime:

echo (new DateTime($test))->format("Y-m-d H:i:s");

  • date_default_timezone_get() mostrar como solo UTC

    –Pathik Vejani

    1 de febrero de 2016 a las 9:41

  • también lo intenté H pero sin suerte, mostrando 2016-01-15 07:14:10

    –Pathik Vejani

    1 de febrero de 2016 a las 9:42


  • Es por eso. Está ingresando una fecha de una zona horaria que es 8 horas después de UTC, en cuyo caso tiene mucho sentido que corresponda a las 7 de la mañana en su hora local.

    – rdiz

    1 de febrero de 2016 a las 9:43

  • Entonces, ¿qué tengo que hacer ahora? ¿Cómo puedo configurar?

    –Pathik Vejani

    1 de febrero de 2016 a las 9:43


  • No voté negativo, así que no lo sé. Probablemente porque parece que no se esforzó tanto en investigar o consultar el manual de PHP antes de crear una pregunta aquí.

    – rdiz

    1 de febrero de 2016 a las 9:49

avatar de usuario de antelove
anteamor

https://www.w3schools.com/php/php_date.asp

obtener una fecha

El parámetro de formato requerido de la función date() especifica cómo formatear la fecha (o la hora).

Aquí hay algunos caracteres que se usan comúnmente para las fechas:

  • d – Representa el día del mes (01 a 31)
  • m – Representa un mes (01 a 12)
  • Y – Representa un año (en cuatro dígitos)
  • l (‘L’ minúscula) – Representa el día de la semana

obtener un tiempo

Aquí hay algunos caracteres que se usan comúnmente para veces:

  • H – formato de 24 horas de una hora (00 a 23)
  • h – formato de 12 horas de una hora con ceros a la izquierda (01 a 12)
  • i – Minutos con ceros a la izquierda (00 a 59)
  • s – Segundos con ceros a la izquierda (00 a 59)
  • a – Antemeridiem y Postmeridiem minúsculas (am o pm)

https://www.php.net/manual/en/datetime.format.php

public DateTime::format ( string $format ) : string

<?php

    $datetime = new DateTime( "now", new DateTimeZone( "Europe/Bucharest" ) );

    echo $datetime->format( 'Y-m-d H:i:s' );

¿Ha sido útil esta solución?