当我在php中运行以下代码时,我得到了一个奇怪的日期('01 / 01/1970 00:00:00):
$now = date('d/m/Y H:i:s', time());
$exp = date('d/m/Y H:i:s', strtotime($now .'+100 years'));
答案 0 :(得分:5)
我会尝试这样的事情
$date = new DateTime();
$exp = $date->modify('+100 years')->format('d/m/Y H:i:s');
答案 1 :(得分:1)
尝试以下一个。
$now = date('d/m/Y H:i:s', strtotime('+100 years'));
输出=> 26/06/2117 18:58:07
答案 2 :(得分:0)
试试这段代码:
<?php
$year = date('Y-m-d H:i:s', strtotime('+5 years'));
echo $year;
?>
<强>输出:强>
2022-06-26 13:29:07
答案 3 :(得分:0)
试试这个
date('d/m/Y H:i:s', strtotime('+100 years'));
输出: -
26/06/2117 09:31:15
答案 4 :(得分:0)
这是因为您为此函数strtotime($now .'+100 years')
提供了错误的日期格式,并返回false
。
试试:
echo date('d/m/Y H:i:s', strtotime("+100 year"));
答案 5 :(得分:0)
“时间戳的有效范围通常是从星期五,1901年12月13日20:45:54 UTC到星期二,2038年1月19日03:14:07 UTC。(这些是与最小值和最大值对应的日期对于32位有符号整数。)“
答案 6 :(得分:0)
$d = date('Y-m-d', strtotime('+5 years'));
答案 7 :(得分:0)
您显然遇到以下一个或两个问题:
/
作为分隔符,strtotime
将天数解释为月份,反之亦然;您可以在documentation page for strtotime
(Notes paragraph):通过查看,可以消除m / d / y或d-m-y格式的日期 各个组件之间的分隔符:如果分隔符是a 斜线(/),然后是美国m / d / y;而如果 separator是短划线( - )或点(。),然后是欧洲d-m-y格式 假定
可以通过更改第一行来轻松解决此问题:
$now = date('d\m\Y H:i:s', time());
为:
$now = date('d-m-Y H:i:s', time());
时间戳的有效范围通常来自1901年12月13日星期五 20:45:54 UTC to Tue,20 Jan Jan 03:14:07 UTC。 (这些是日期 对应于32位带符号的最小值和最大值 整数)
如果这是你的情况,你最好使用DateTime对象(正如其他人所建议的那样here),这些对象不受此限制。这是一条应该有效的路线:
$exp = date_format(date_create("+100 years"), 'd/m/Y H:i:s');
您的代码中发生的是:
strtotime
会返回false
false
传递给date
函数的第二个参数时,which expects an int
,false
会转换为0
,这会date
返回Epoch Time。