2011-01-30 113 views
2

因此,我正在這個系統,是按幾十年排序日期。我正在使用製作時間,並且我有一切正常工作,直到它達到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; 

回答

2

替代程序功能

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

6

嘗試使用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");