日期前1900的PHP mktime()

问题描述:

因此,我正在这个系统,是按几十年排序日期。我正在使用制作时间,并且我有一切正常工作,直到它达到1900年或以下。如果一切都返回1964年12月24日类型日期。其他人可以为什么会发生这种情况,还有一个可怕的soltuion?日期前1900的PHP mktime()

而对于此代码:

//$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; 

替代程序功能

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

([`date_create(...)`(http://php.net/manual /en/datetime.construct.php)是[`new DateTime(...)`](http://php.net/manual/en/datetime.construct.php)的别名,并返回一个'DateTime`对象,两者都是自PHP 5.2起可用的。`date_format`是`DateTime-> format()`的别名,并以'DateTime`对象作为参数。) – arnaud576875 2011-01-30 21:07:54

尝试使用DateTime类:

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

DateTime类是可用的,因为PHP 5.2。

如果你有PHP 5.3,使用DateTime::createFromFormat

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