【问题标题】:php - add + 7 days to date format mm dd, YYYYphp - 添加 + 7 天日期格式 mm dd, YYYY
【发布时间】:2011-03-02 23:22:56
【问题描述】:

我在数据库中有 2011 年 3 月 3 日这种格式的日期,我需要将其延长 7 天。我是说

 $date = $date + 7
。是否有任何内置功能可以做到这一点?

【问题讨论】:

标签: php datetime


【解决方案1】:
$date = "Mar 03, 2011";
$date = strtotime($date);
$date = strtotime("+7 day", $date);
echo date('M d, Y', $date);

【讨论】:

  • 是否还有将最终形式与今天的日期进行比较? (例如 if ($date
  • @Michael strtotime 的结果是一个整数。此整数表示自 UNIX 纪元(1970 年 1 月 1 日 00:00:00)以来的秒数。这些整数可以使用您刚刚使用的确切代码进行比较。
  • @Michael time() 函数可用于获取当前日期/时间作为 UNIX 时间戳进行比较。
  • 是的,你是对的 .. 反正我用 strtotime("now") 而不是 time()
【解决方案2】:

strtotime 的“+1 个月”问题

如几篇博客所述,strtotime() 解决了下个月不存在的“+1 个月”(“下个月”)问题,与其他实现方式(例如 MySQL)不同。

$dt = date("Y-m-d");
echo date( "Y-m-d", strtotime( "$dt +1 day" ) ); // PHP:  2009-03-04
echo date( "Y-m-d", strtotime( "2009-01-31 +2 month" ) ); // PHP:  2009-03-31

【讨论】:

    【解决方案3】:

    echo date('d/m/Y', strtotime('+7 days'));

    【讨论】:

    • 完美运行。
    【解决方案4】:

    另一种更新的对象风格的方法:

    $date = new DateTime('now');
    $date->add(new DateInterval('P7D'));
    

    php doc of datetime add

    【讨论】:

    • 转换成字符串: $dateString = $date->format('Y-m-d H:i:s');
    【解决方案5】:

    是的

    $oneweekfromnow = strtotime("+1 week", strtotime("<date-from-db>"));
    

    另一方面,为什么你的日期在数据库中是这样的?

    【讨论】:

      【解决方案6】:
      onClose: function(selectedDate) {
      
          $("#dpTodate").datepicker("option", "minDate", selectedDate);
          var maxDate = new Date(selectedDate);
      
           maxDate.setDate(maxDate.getDate() + 6); //6 days extra in from date
      
           $("#dpTodate").datepicker("option", "maxDate", maxDate);
      }
      

      【讨论】:

      • 来自审核队列:我可以请求您在源代码周围添加一些上下文。仅代码的答案很难理解。如果您可以在帖子中添加更多信息,这将对提问者和未来的读者都有帮助。
      【解决方案7】:

      我会这样解决。首先,我将创建一个给定日期时间对象的实例。然后,我将创建另一个比初始对象晚 7 天的日期时间对象。最后,我会按照你喜欢的方式对其进行格式化。

      使用酥皮库,这非常直观和优雅。代码如下:

      (new Future(
          new FromCustomFormat('F j, Y', 'March 3, 2011'),
          new NDays(7)
      ))
          ->value();
      

      结果是 ISO8601 格式的字符串。如果您愿意,您可以使用相同的 ISO8601 语法随意格式化它:

      (new ISO8601Formatted(
          new Future(
              new FromCustomFormat('F j, Y', 'March 3, 2011'),
              new NDays(7)
          ),
          'F j, Y'
      ))
          ->value();
      

      上面的代码使用了蛋白酥皮库。这里有一个quick start,有需要的可以看一下。

      【讨论】:

        猜你喜欢
        • 2013-04-07
        • 2013-01-28
        • 2016-01-02
        • 1970-01-01
        • 2012-05-05
        • 1970-01-01
        • 2013-03-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多