使用php向datetime添加一年

使用php向datetime添加一年,php,Php,我们怎样才能在这个日期加上1年 类似于$newdata=$data['user']['time']+1年 或 谢谢 亚当·拉马丹(Adam Ramadhan)我想你可以很容易地做到这一点。比如: $newdata = 2012-03-07 00:33:45 尽管“c”格式字符串与输入格式不同。您可以查阅公司的文档,了解如何构造正确的文档 “Y-m-d H:i:s”——正如蒂姆·库珀所建议的那样——看起来是正确的。是您正在寻找的函数: $newdata = date('c', strtotime

我们怎样才能在这个日期加上1年


类似于
$newdata=$data['user']['time']+1年

谢谢

亚当·拉马丹(Adam Ramadhan)

我想你可以很容易地做到这一点。比如:

$newdata = 2012-03-07 00:33:45
尽管“c”格式字符串与输入格式不同。您可以查阅公司的文档,了解如何构造正确的文档

“Y-m-d H:i:s”——正如蒂姆·库珀所建议的那样——看起来是正确的。

是您正在寻找的函数:

$newdata = date('c', strtotime($data['user']['time'] . ' +1 year'));

首先,必须将MySQL
datetime
转换为PHP能够理解的内容。有两种方法可以做到这一点

  • 在查询中使用
    UNIX\u TIMESTAMP()
    告诉MySQL返回
    datetime
    列的UNIX时间戳

    $data['user']['seal_data'] = date('Y-m-d H:i:s', strtotime('+1 year', strtotime($data['user']['time'])));
    
  • 使用
    DateTime::createFromFormat
    将字符串时间转换为PHP可以理解的内容

    SELECT whatever, UNIX_TIMESTAMP(myTime) AS 'myUnixTime' FROM myTable;
    

  • 一旦完成了,你就可以利用时间。。。根据上面使用的方法,您可以使用以下方法之一

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

    $date = DateTime::createFromFormat('Y-m-d H:i:s', $data['user']['time']);
    
  • 如果您有
    DateTime
    对象,则可以使用以下选项:

    $inAYear = strtotime('+1 year', $data['user']['unixTime']);
    
    $inAYear = $date->add(new DateInterval('P1Y'));
    
    $strTime = date('Y-m-d H:i:s', $inAYear);
    

  • 现在,要以令人尊敬的格式显示日期,必须告诉PHP以正确的格式返回字符串

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

    $inAYear = strtotime('+1 year', $data['user']['unixTime']);
    
    $inAYear = $date->add(new DateInterval('P1Y'));
    
    $strTime = date('Y-m-d H:i:s', $inAYear);
    
  • 如果您有
    DateTime
    对象,则可以使用以下选项:

    $inAYear = strtotime('+1 year', $data['user']['unixTime']);
    
    $inAYear = $date->add(new DateInterval('P1Y'));
    
    $strTime = date('Y-m-d H:i:s', $inAYear);
    

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

    $strTime = $inAYear->format('Y-m-d H:i:s');
    
    这应该可以做到(未经测试)

    目前(2017年)的做法是使用 这个问题是谷歌搜索“php datetime添加一年”的首要问题,但严重过时。虽然前面的大多数答案在大多数情况下都适用,但既定的标准是使用DateTime对象来代替,这主要是因为
    strottime
    需要仔细操作时区和DST

    TL;博士
  • 转换为日期时间:
    $date=newdatetime('2011-03-07 00:33:45',[user TZ])
  • 使用:
    $date->modify(“+1年”)
  • 根据需要设置格式。
    • 从以下位置更改时区:
      $date->setTimezone(新的DateTimeZone('Pacific/Chatham'))
    • 转换为字符串,格式为:
      echo$date->format('Y-m-dh:i:s')
  • 按照此模式操作日期和时间将为您处理最糟糕的时区/DST/闰时异常

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

    • 将系统时区设置为UTC时,生活会更轻松
    • 切勿在配置文件之外修改系统时区。
      • 我见过太多依赖于的代码。如果你这样做,停下来。请将时区保存在变量中,并在应用程序中传递
    更多阅读


    首先,如果日期格式用斜线(/)分隔,如“2019/12/31”,则应将其转换为短划线(-)格式,如“2019-12-31”,使用
    str_replace()
    函数进行转换

    $data = "2011-03-07 00:33:45";
    
    echo 'Original date +1 year: ' . date('Y-m-d H:i:s', strtotime(date("Y-m-d H:i:s", strtotime($data)) . " +1 year"));
    
    $string = str_replace('/', '-', '2019/12/31'); //output: 2019-12-31
    
    要添加时间/日/月/年,请不要使用
    strotime()
    函数,因为它无法添加超过2038年的时间。 所以在这里我更喜欢使用
    DateTime()
    函数

    $data = "2011-03-07 00:33:45";
    
    echo 'Original date +1 year: ' . date('Y-m-d H:i:s', strtotime(date("Y-m-d H:i:s", strtotime($data)) . " +1 year"));
    
    $string = str_replace('/', '-', '2019/12/31'); //output: 2019-12-31
    

    什么是
    $data['user']['time']
    ?字符串?应该是日期时间mysql格式。sori编辑了数百个现有问题的可能副本和每一个问题,这些问题询问“如何[添加/删除]x[s/m/h/d/m/y]到一个日期”。
    $newdata=$data['user']['time']+strottime(+1年”)?是的,我试过了,在这里发布之前,它给了我们类似1331055225的信息。也许是unixtime或者别的什么。是的,它返回UNIX时间戳。您需要使用类似date()的东西来重新格式化它。@Adam:现在应该是您需要的了。您似乎对您的引用有点困惑,但这很有效,很简单,所以请投票;-)