Zur*_*ser 3 php date dateadd strtotime
$somedate = "1980-02-15";
$otherdate = strtotime('+1 year', strtotime($somedate));
echo date('Y-m-d', $otherdate);
Run Code Online (Sandbox Code Playgroud)
输出
1981-02-15
Run Code Online (Sandbox Code Playgroud)
和
$somedate = "1980-02-15";
$otherdate = strtotime('+2 year', strtotime($somedate));
echo date('Y-m-d', $otherdate);
Run Code Online (Sandbox Code Playgroud)
输出
1982-02-15
Run Code Online (Sandbox Code Playgroud)
但
$somedate = "1980-02-15";
$otherdate = strtotime('+75 year', strtotime($somedate));
echo date('Y-m-d', $otherdate);
Run Code Online (Sandbox Code Playgroud)
输出
1970-01-01
Run Code Online (Sandbox Code Playgroud)
怎么修?
这是2038的bug,就像y2k一样,由于32位的限制,系统无法在那一年之后处理日期.请使用DateTime类来解决此问题.
适用于PHP 5.3+
$date = new DateTime('1980-02-15');
$date->add(new DateInterval('P75Y'));
echo $date->format('Y-m-d');
Run Code Online (Sandbox Code Playgroud)
对于PHP 5.2
$date = new DateTime('1980-02-15');
$date->modify('+75 year');
echo $date->format('Y-m-d');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2741 次 |
| 最近记录: |