2010-12-13 24 views
0

J'essaie d'utiliser l'objet php datetime pour gérer les dates.objet php datetime limite de l'année 1960

Voici mon code:

$date = new DateTime('01 Dec, 1969'); 
echo $date->format('Y-m-d'); 

Le code ci-dessus renvoie 2010-12-01

Mais si je change l'année 1969-1945 ou quoi que ce soit moins de 1960 alors le code renvoie l'année incorrecte. Par exemple:

Ce code:

$date = new DateTime('01 Dec, 1950'); 
echo $date->format('Y-m-d'); 

retours 2010-12-01

+0

Veuillez fournir votre version de PHP et système d'exploitation, y compris l'architecture du processeur. – Gordon

+0

php version 5.2.14 OS: Windows 7 IIS7.5 –

+0

@user dans votre premier exemple, voulez-vous dire 2010 ou 1969? – Gordon

Répondre

3

This is likely a bug. Consider filing it to the bugtracker.

Lorsque vous modifiez le format d'entrée

$date = new DateTime('Dec 1st, 1950'); 
echo $date->format('Y-m-d'); 

PHP va correctement faire cela en

1950-12-01 

Voir http://codepad.org/trFfB6Q1


Au PHP5.3, vous pouvez également utiliser DateTime::createFromFormat pour créer une date. Cela fonctionne avec votre chaîne de DateTime d'origine, alors:

$date = DateTime::createFromFormat('d M, Y', '01 Dec, 1950'); 
echo $date->format('Y-m-d'); 

Voir http://codepad.viper-7.com/08kK5M

+0

Merci, ça a marché! –

-3

Datetime PHP est basé sur un horodatage unix qui a commencé à compter du 1er janvier 1970.

Vous ne peut pas utiliser DateTime pour accéder à une date avant cela.

+0

Pas vrai. Voir http://de.php.net/manual/fr/intro.datetime.php – Gordon

0

Étant donné que ce problème ne se produit pas sur mon système (PHP5.3 sur une machine windows) Je vous suggère de mettre à jour à PHP 5.3 . Il n'y a aucun inconvénient et ce n'est probablement pas le seul bug que vous rencontrerez. J'ai testé différents formats de date ('1969/12/1', '01 Dec, 1969', ..) et n'ai eu aucun problème. si le problème persiste n'hésitez pas à me gifler;)

+0

essayez la deuxième date. Je pense que l'OP a mal saisi la date résultante pour le premier dans la question. – Gordon