¿Cómo convierto mi hora 2010-12-30 23:21:46
al formato de fecha ISO 8601? (-_-;)
103
¿Cómo convierto mi hora 2010-12-30 23:21:46
al formato de fecha ISO 8601? (-_-;)
Esta es la forma recomendada.
$datetime = new DateTime('2010-12-30 23:21:46');
echo $datetime->format(DateTime::ATOM); // Updated ISO8601
Para versiones anteriores de PHP, o si se siente más cómodo con el código de procedimiento.
echo date(DATE_ISO8601, strtotime('2010-12-30 23:21:46'));
2010-12-30T23:21:46+1100
¿cómo hacerlo 2010-12-30T23:21:46+11:00
?
preg_replace('/(?<=\d{2})(?=\d{2}$)/', ':', '2010-12-30T23:21:46+1100')
. Produce 2010-12-30T23:21:46+11:00
.
date('c', strtotime('2010-12-30 23:21:46'))
nice @Gordon :)
DATE_ISO8601
produce una cadena de fecha que es ligeramente diferente a ISO8601 (faltan los dos puntos en el TZ, ISO8601 espera que los tiempos sean todos con O todos sin los dos puntos, no una mezcla) - date('c')
produce una fecha válida estricta de ISO 8601 - Esto podría ocasionar errores de rastreo difíciles si el código espera un formato de fecha y hora ISO 8601 estricto. Ref: en.wikipedia.org/wiki/ISO_8601
Después de PHP 5, puede usar esto: echo date("c");
formulario ISO 8601 con formato de fecha y hora.
Nota para comentarios:
Con respecto a esto , ambas expresiones son válidos para la zona horaria, para el formato básico: ±[hh]:[mm], ±[hh][mm], or ±[hh]
.
Pero tenga en cuenta que + 0X: 00 es correcto y + 0X00 es incorrecto para uso prolongado. Entonces es mejor usar date("c")
. Una discusión similar aquí .
DATE_ISO8601
; +0X:00
vs +0X00
.
'c'
y DATE_ISO8601
producen representaciones de tiempo ISO8601 válidas.
DATE_ISO8601
no produce una representación ISO8601 válida. Sin embargo, DATE_ATOM lo hace
strtotime('2012-01-18T11:45:00+01:00');
// Output : 1326883500
date_format(date_timestamp_set(new DateTime(), 1326883500), 'c');
// Output : 2012-01-18T11:45:00+01:00
date_format(date_create('@'. 1326883500), 'c') . "\n";
// Output : 2012-01-18T10:45:00+00:00
date_format(date_timestamp_set(new DateTime(), 1326883500)->setTimezone(new DateTimeZone('America/New_York')), 'c');
// Output : 2012-01-18T05:45:00-05:00
Si intenta establecer un valor en datetime-local
date("Y-m-d\TH:i",strtotime('2010-12-30 23:21:46'));
//output : 2010-12-30T23:21
date($format, strtotime($dateString))
o elDateTime
objeto equivalente. Solo difieren en la entrada a esas funciones. Todo lo que tiene que hacer es ir a las páginas correspondientes en el Manual de PHP y averiguar cuál es la entrada.