【问题标题】:PHP: Adding years to a timestampPHP:将年份添加到时间戳
【发布时间】:2011-07-07 13:38:58
【问题描述】:

在给定 UTC 时间戳的 PHP 中,我想精确地添加 N 年。这应该考虑闰年。

谢谢。

【问题讨论】:

    标签: php date time timestamp leap-year


    【解决方案1】:
    $newTimestamp = strtotime('+2 years', $timestamp);
    

    根据需要替换“+2 年”。

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

    【讨论】:

    • @NullUserException:看起来很明显,您将用N 替换2,并且$timestamp 包含正确的时间戳。在 Jeff 的代码中没有任何地方说 $timestamp = now。
    • 这是一个例子......附带条件,“根据需要替换+2年”:P
    【解决方案2】:
    $date = new DateTime();
    $date->add(new DateInterval('P10Y'));
    

    将 10 年 (10Y) 添加到“今天”。不过,DateTime 仅在 PHP 5.3 中提供。

    【讨论】:

    • +1,不知道那个!在旁注中,您是否知道一些关于 v5.3 新内容的好文本/书籍/教程?官方手册除外。
    • 不是随便的。不过,php 站点有一个很好的更改日志/迁移教程。我倾向于避免阅读 PHP 书籍,因为它们要么非常过时,要么写得不好(例如,导致你编写非常糟糕的不安全代码),要么就是大错特错。
    • 不完全正确:DateTime 是从 5.2 开始的,仅在 5.3 中添加了 DateInterval。
    • 这是一个很好的解决方案,很抱歉我们没有 php 5.3。
    • 在这种情况下,其他答案中的 strtotime() 选项将为您工作。
    【解决方案3】:

    您在执行此操作时应该考虑的一件事。

    $newTimestamp = strtotime('+2 years', $timestamp);
    

    这加起来是 2 年(720 或 721 天)。如果您只想保持相同的日期和月份并在时间戳中添加额外的 2 年

    你必须使用 mktime。

    例子

    $timestamp = mktime(0, 0, 0, $month, $day, $year+2);`
    

    【讨论】:

    • 现在你应该使用像 Carbon 这样的库在 php.ini 中处理所有这些时间/日期人员。处理日期是一种乐趣。
    【解决方案4】:
    $date    = "1998-08-14";
    
    $newdate = strtotime ( '+2 years' , strtotime ( $date ) ) ;
    $newdate = date ( 'Y-m-j' , $newdate );
    
    echo $newdate;
    

    回声

    2000-08-14
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-14
      • 2018-02-08
      • 2022-12-30
      • 1970-01-01
      • 2010-10-26
      • 2014-03-18
      • 1970-01-01
      相关资源
      最近更新 更多