在php中添加年份到今天的日期

时间:2017-06-26 13:21:46

标签: php

当我在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'));

8 个答案:

答案 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位有符号整数。)“

http://php.net/manual/en/function.strtotime.php

答案 6 :(得分:0)

$d = date('Y-m-d', strtotime('+5 years'));

答案 7 :(得分:0)

您显然遇到以下一个或两个问题:

  1. 一个简单的格式问题(这肯定是错误的),因为您使用/作为分隔符,strtotime将天数解释为月份,反之亦然;您可以在documentation page for strtotime (Notes paragraph)
  2. 中阅读
      

    通过查看,可以消除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());
    
    1. Year 2038 Problem。您也可以在same documentation page(同一段,在上一个引文的正上方)中阅读此内容:
    2.   

      时间戳的有效范围通常来自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');
      

      您的代码中发生的是:

      • 由于您传递的是不存在的日期(也可能是因为32位环境),strtotime会返回false
      • false传递给date函数的第二个参数时,which expects an intfalse会转换为0,这会date返回Epoch Time