puedo planisferio para niños mapa husos huso horarios horario hora funciona fecha ejemplos como celular cambiar ajustar actualizar php jquery

php - planisferio - Error al analizar la cadena de tiempo en la posición 41(i): doble especificación de zona horaria



no puedo cambiar la hora de mi celular (2)

Estoy usando el daterangepicker jquery, que a su vez usa el datapicker jQuery.

Mi sistema de Ubuntu funciona bien. El navegador está enviando una cadena analizable:

$dateStarted = new /DateTime($post[''startDate'']); // Thu Nov 15 2012 00:00:00 GMT-0700 (MST) print_r($dateStarted);

Salidas:

DateTime Object ( [date] => 2012-11-15 00:00:00 [timezone_type] => 1 [timezone] => -07:00 )

En nuestro sistema de prueba de Windows, el navegador está enviando una zona horaria ampliada en la cadena:

$dateStarted = new /DateTime($post[''startDate'']); // Thu Nov 15 2012 00:00:00 GMT-0700 (Mountain Standard Time) print_r($dateStarted);

Tiros y excepción:

Exception: DateTime::__construct(): Failed to parse time string (Thu Nov 15 2012 00:00:00 GMT-0700 (Mountain Standard Time)) at position 41 (i): Double timezone specification

He buscado en Google y no puedo encontrar ningún recurso en este error específico de PHP.

Estoy "resolviendo" este problema al eliminar el texto entre corchetes que devuelve los mismos resultados:

$dateString = strstr($dateString, " (", true); // Thu Nov 15 2012 00:00:00 GMT-0700

Esto parece bastante malo de hacer y estoy buscando sugerencias sobre cómo hacer esto correctamente.


Usar ->createfromformat() como sugirió Marc B parece ser una mejor solución.

Lo que he terminado es:

$dateStarted = /DateTime::createFromFormat(''D M d Y H:i:s e+'', $post[''startDate'']); // Thu Nov 15 2012 00:00:00 GMT-0700 (Mountain Standard Time) print_r($dateStarted); print_r(/DateTime::getLastErrors());

Que da salida a la fecha correcta ahora:

DateTime Object ( [date] => 2012-11-15 00:00:00 [timezone_type] => 1 [timezone] => -07:00 ) Array ( [warning_count] => 1 [warnings] => Array ( [33] => Trailing data ) [error_count] => 0 [errors] => Array ( ) )

El + al final del formato es la magia que hace que esto funcione.


Yo diría que esto es un error. Obtienes el mismo error, al usar esta cadena

$dateStarted = new /DateTime("Thu Nov 15 2012 00:00:00 GMT-0700 (abcdefg)");

Uno menos

$dateStarted = new /DateTime("Thu Nov 15 2012 00:00:00 GMT-0700 (abcdef)");

y se analiza "correctamente".

Parece que la cadena de zona horaria está restringida a 6 caracteres. A menos que pueda y esté dispuesto a configurar sus clientes de Windows, yo diría que eliminar la "zona horaria" es una "solución" viable.