用php添加一年到日期时间

Ada*_*han 15 php

$data['user']['time'] = '2011-03-07 00:33:45';    
Run Code Online (Sandbox Code Playgroud)

我们怎么能在这个日期加1年?

类似的东西$newdata = $data['user']['time'] + 1 year

要么

$newdata = 2012-03-07 00:33:45
Run Code Online (Sandbox Code Playgroud)

谢谢

亚当拉马丹

Tim*_*per 26

strtotime() 是你正在寻找的功能:

$data['user']['seal_data'] = date('Y-m-d H:i:s', strtotime('+1 year', strtotime($data['user']['time'])));
Run Code Online (Sandbox Code Playgroud)

  • 是的,它返回UNIX时间戳.你需要使用像date()这样的东西来重新格式化它. (2认同)

And*_*ore 12

首先,您必须将MySQL转换为datetimePHP可以理解的内容.有两种方法可以做到这一点......

  1. UNIX_TIMESTAMP()在查询中使用,告诉MySQL返回datetime列的UNIX时间戳.

    SELECT whatever, UNIX_TIMESTAMP(myTime) AS 'myUnixTime' FROM myTable;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 使用DateTime::createFromFormat你的字符串时间转换为PHP的东西可以理解.

    $date = DateTime::createFromFormat('Y-m-d H:i:s', $data['user']['time']);
    
    Run Code Online (Sandbox Code Playgroud)

完成后,您可以使用时间...根据您上面使用的方法,您可以使用以下方法之一.

  1. 如果您有unix时间戳,则可以使用以下内容添加一年:

    $inAYear = strtotime('+1 year', $data['user']['unixTime']);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果您有DateTime对象,则可以使用以下内容:

    $inAYear = $date->add(new DateInterval('P1Y'));
    
    Run Code Online (Sandbox Code Playgroud)

现在,要以可敬的格式显示日期,您必须告诉PHP以正确的格式返回字符串.

  1. 如果您有unix时间戳,则可以使用以下内容:

    $strTime = date('Y-m-d H:i:s', $inAYear);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果您有DateTime对象,则可以使用以下内容:

    $strTime = $inAYear->format('Y-m-d H:i:s');
    
    Run Code Online (Sandbox Code Playgroud)

或者,如果您不想处理所有这些问题,则可以在查询时添加一年.

SELECT whatever, DATE_ADD(myTime, INTERVAL 1 YEAR) AS 'inAYear' FROM myTable;
Run Code Online (Sandbox Code Playgroud)


Ton*_*cas 6

Current (2017) 实践是使用DateTime

这个问题是谷歌搜索“php datetime add one year”的首要问题,但已经严重过时了。虽然以前的大多数答案在大多数情况下都可以正常工作,但已建立的标准是为此使用DateTime对象,主要是因为strtotime需要仔细操作时区和 DST。

TL; 博士

  1. 转换为日期时间$date = new DateTime('2011-03-07 00:33:45', [user TZ]);
  2. 使用DateTime::modify$date->modify('+1 year');
  3. 需要的格式。

遵循这种操作日期和时间的模式将为您处理最糟糕的时区/夏令时/闰时。

请记住最后两个注意事项:

  • 系统时区设置为UTC ,生活更轻松。
  • 切勿在配置文件之外修改系统时区。
    • 我见过太多依赖date_default_timezone_set 的代码。如果你正在这样做,停止。将时区保存在一个变量中,并将其传递给您的应用程序,

更多阅读

如何使用PHP计算两个日期之间的差异?

转换日期格式 yyyy-mm-dd => dd-mm-yyyy

PHP - strtotime,指定时区