【问题标题】:PHP date strtotime not workingPHP日期strtotime不起作用
【发布时间】:2012-04-12 18:08:50
【问题描述】:

这段代码是我写的

echo date("Y-m-d", strtotime($date, strtotime("+ " . $days . " days")));

$date = 2012-04-12
$days = 15

我希望将$days(15 天)添加到日期 (2012-04-12) 我希望得到2012-04-27,此代码返回我2012-04-12,我做错了什么?

【问题讨论】:

    标签: php date strtotime


    【解决方案1】:
    echo date('Y-m-d', strtotime('+15 days', strtotime('2012-04-12')));
    

    【讨论】:

    • 谢谢,正是我想要的:)
    【解决方案2】:

    不要使用 strtotime()。这是不可靠的,尽管你并没有真正做任何会真正回来咬你臀部的事情。但是依赖strtotime仍然是一件坏事,因为它会让你的生活在某个时候变得悲惨。

    改用DateTime

    $now = DateTime::CreateFromFormat('Y-m-d', '2012-04-12');
    $then = $now->add(new DateInterval('P15D'));
    $date = $then->format('Y-m-d');
    

    【讨论】:

    • strtotime() 不是不可靠的;事实上,DateTime 类在工作表下使用它。
    • 是的,如果你是自动检测的东西。但是如果你有一个已知格式的日期,那么就不要使用 strtotime。
    • 我原则上同意你的观点,Marc,但我质疑实例化一个对象来做如此微不足道的事情的必要性。如果他要进行时区更改或其他更高级的操作,是的,绝对使用该对象。要简单地加几天?嗯。
    【解决方案3】:
    $date = '2012-04-12';
    $days = 15;
    echo date('Y-m-d', strtotime("$date +$days days") );
    

    【讨论】:

      【解决方案4】:
      echo date("Y-m-d", strtotime("+$days days", $date));
      

      【讨论】:

        【解决方案5】:

        您的语法不正确。将代码全部放在一行中没有必要,甚至没有帮助。在这种情况下,我们看到尝试这样做会导致语法问题。不要害怕一些额外的小变量!

        $date = '2012-04-12';
        $days = 15;
        
        $ts = strtotime($date);
        $new_ts = strtotime('+'.$days.' days', $ts);
        $new_date = date('Y-m-d', $new_ts);
        

        清晰、易读、易调试。如果你喜欢代码高尔夫,你可以把它放在一行中,但是有一种更清晰的写法:

        $new_date = date (
            'Y-m-d',
            strtotime (
                '+'.$days.' days',
                strtotime($date)
            )
        );
        

        文档

        【讨论】:

          【解决方案6】:

          为什么不直接使用DateTime 类?

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2018-11-12
            • 1970-01-01
            • 1970-01-01
            • 2021-08-20
            • 1970-01-01
            • 2013-04-19
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多