Convertir fecha y hora en cadena PHP
Frecuentes
Visto 727,998 veces
252
Ya he investigado mucho en el sitio sobre cómo puedo convertir el objeto PHP DateTime a String. Siempre veo "String to DateTime" y no "DateTime to String"
Se puede hacer eco de PHP DateTime, pero lo que quiero es procesar mi DateTime con funciones de cadena de PHP.
Mi pregunta es ¿cómo puedo hacer que PHP dateTime Object sea una cadena a partir de este tipo de código?
$dts = new DateTime(); //this returns the current date time
echo strlen($dts);
6 Respuestas
465
Puede utilizar el format
método de la DateTime
clase:
$date = new DateTime('2000-01-01');
$result = $date->format('Y-m-d H:i:s');
If format
falla por alguna razón, volverá FALSE
. En algunas aplicaciones, podría tener sentido manejar el caso fallido:
if ($result) {
echo $result;
} else { // format failed
echo "Unknown Time";
}
Respondido el 03 de diciembre de 12 a las 19:12
+1 Funciona. ¿Puede decirnos también cómo verificar si hay un valor nulo (en la misma línea) antes de realizar esta conversión? ¡Gracias! - Vatio
Hola @Watt, ¡buen punto! He ampliado el ejemplo para mostrar cómo se puede manejar el caso fallido. - rjz
olvidaste la zona horaria, en su lugar usa $date->format('c')
or $date->format('Y-m-d H:i:s Z')
or $date->format('Y-m-d H:i:s T')
- Timo Huovinen
¿Qué declaración de uso necesita para poder usar -> formato? Dice que falta algo en Zend - Químico
Puedes usar esta forma más corta $result = (new DateTime('2000-01-01'))->format('Y-m-d H:i:s');
desde PHP 5.4. Mira aquí: docs.php.net/manual/en/migration54.new-features.php Se ha agregado el acceso de los miembros de la clase en la creación de instancias, por ejemplo, (nuevo Foo) -> bar (). - Firmenich
18
echo date_format($date,"Y/m/d H:i:s");
Respondido 13 ago 15, 08:08
18
La forma más sencilla que encontré es:
$date = new DateTime(); //this returns the current date time
$result = $date->format('Y-m-d-H-i-s');
echo $result . "<br>";
$krr = explode('-', $result);
$result = implode("", $krr);
echo $result;
Espero que ayude.
Respondido 23 Oct 18, 10:10
16
Hay algunos formatos predefinidos en date_d.php
para usar con format
me gusta:
define ('DATE_ATOM', "Y-m-d\TH:i:sP");
define ('DATE_COOKIE', "l, d-M-y H:i:s T");
define ('DATE_ISO8601', "Y-m-d\TH:i:sO");
define ('DATE_RFC822', "D, d M y H:i:s O");
define ('DATE_RFC850', "l, d-M-y H:i:s T");
define ('DATE_RFC1036', "D, d M y H:i:s O");
define ('DATE_RFC1123', "D, d M Y H:i:s O");
define ('DATE_RFC2822', "D, d M Y H:i:s O");
define ('DATE_RFC3339', "Y-m-d\TH:i:sP");
define ('DATE_RSS', "D, d M Y H:i:s O");
define ('DATE_W3C', "Y-m-d\TH:i:sP");
Usar así:
$date = new \DateTime();
$string = $date->format(DATE_RFC2822);
Respondido el 06 de Septiembre de 16 a las 20:09
Puede usar la constante de DateTime (por ejemplo, DateTime::ISO8601), hace que el código sea más fácil de leer. - Anh Tuan Mai
2
Manera más corta usando la lista. Y puedes hacer lo que quieras con cada componente de fecha.
list($day,$month,$year,$hour,$min,$sec) = explode("/",date('d/m/Y/h/i/s'));
echo $month.'/'.$day.'/'.$year.' '.$hour.':'.$min.':'.$sec;
Respondido el 30 de Septiembre de 17 a las 03:09
2
Ha funcionado para mi
$start_time = date_create_from_format('Y-m-d H:i:s', $start_time);
$current_date = new DateTime();
$diff = $start_time->diff($current_date);
$aa = (string)$diff->format('%R%a');
echo gettype($aa);
Respondido 23 Oct 18, 10:10
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas php datetime or haz tu propia pregunta.
¿Por qué quiere procesar su DateTime con funciones de cadena? ¿Qué estás tratando de lograr? - mgiuffrida
¿Algún tipo de validador de fecha y hora? en php- Netorica