2011-01-30 4 views
2

Je travaille donc sur ce système de tri par dates. J'utilise make times et tout fonctionne bien jusqu'à ce qu'il atteigne l'année 1900 ou moins. Après que tout retourne une date de type Dec 24,1964. Quelqu'un d'autre peut-il me dire pourquoi cela se passe et une soltuion possbile?PHP mktime() pour les dates antérieures à 1900

Et le code pour cela:

//$decades is a string ex: '1950-1960' 

$decade_array=explode('-',$decades); 

$date_active=date("M-d-Y", mktime(0, 0, 0, 1,1 , trim($decade_array[0]))); 
$date_inactive=date("M-d-Y", mktime(0, 0, 0, 1, 1, trim($decade_array[1]))); 

echo $date_active.' '.$date_inactive; 

Répondre

2

fonction de procédure de remplacement

date_format(date_create('1234-01-01'), 'M-d-Y'); 
+1

([ 'date_create (...)'] (http://php.net/manual /en/datetime.construct.php) est un alias pour ['new DateTime (...)'] (http://php.net/manual/fr/datetime.construct.php) et retourne un objet 'DateTime' , les deux sont disponibles depuis PHP 5.2. 'date_format' est un alias pour' DateTime-> format() 'et prend un objet' DateTime' en paramètre.) – arnaud576875

6

Essayez avec la classe DateTime:

$date = new DateTime("1234-01-01"); 
echo $date->format("M-d-Y"); // outputs Jan-01-1234 

La classe DateTime est disponible depuis PHP 5.2.

Si vous avez PHP 5.3, utilisez DateTime::createFromFormat:

$date = DateTime::createFromFormat('Y-m-d', "1234-01-01"); 
echo $date->format("M-d-Y"); 
Questions connexes