2017-04-20 38 views
-2

我試圖找到退休日期從58歲加入日期在PHP中。我試圖找到退休日期從58歲在加入日期在php

$retire_date = date('Y-m-d', strtotime($joining_date. '+58 years')); 

它顯示1970-01-01,可以到「40年」它顯示correctly.can任何有助於發現時間戳的這一個

+3

請分享'$ joining_date' –

+0

詳細解釋你所面對 –

+0

我已經解決了它是什麼的問題,如果你感興趣,看看我的代碼,請回復我將張貼代碼謝謝你爲你的貢獻朋友 –

回答

1

有效範圍通常是從週五,13 Dec 1901 20:45:54 UTC到2038年1月19日星期三03:14:07 UTC。 (這些是與32位有符號整數的最小值和最大值對應的日期。)另外,並非所有平臺都支持負時間戳,因此您的日期範圍可能不會早於Unix時期。這意味着例如1970年1月1日之前的日期不適用於Windows,某些Linux發行版和其他一些操作系統。雖然PHP 5.1.0和更新版本克服了這個限制。

對於64位版本的PHP,時間戳的有效範圍實際上是無限的,因爲64位可以代表任何方向大約2930億年。

如果年份編號以兩位數格式指定,則00-69之間的值將映射到2000-2069和70-99至1970-1999。請參閱以下注釋,瞭解32位系統上可能存在的差異(可能的日期可能會在2038-01-19 03:14:07結束)。

Source

1

除了autista_z的回答, 您可以在此stumple如果使用不正確的日期格式或類似這樣的

東西下面的例子

$joining_date = "1976-14-02"; 
$timeToAdd = "+ 58 years"; 

$objDateTime = DateTime::createFromFormat("Y-m-d",$joining_date); 
$objDateTime->modify($timeToAdd); 
echo "My Retire Date is ".$objDateTime->format("Y-m-d")."<br />"; 


$retire_date = date('Y-m-d', strtotime($joining_date.$timeToAdd)); 
echo $retire_date; 
die; 

這導致用的strtotime到結果像1970-01-01。

這也是爲什麼我更喜歡日期時間函數createFromFormat,如果你知道你的格式,因爲結果是絕對可預測的。

(你會看到這個格外例子 - 日期時間試圖找到一個正確的值,並把它解釋爲1977年2月2日)

雖然它並沒有真正解釋爲什麼40年會的工作,但也許你用不同的數據來測試它。

0

我認爲這會對你有用。 $retire_date = date('Y-m-d', strtotime('+58 years', strtotime($joining_date)));

1
$retire_date = date('Y-m-d', strtotime('+58 years', strtotime($joining_date))); 

正確答案