【问题标题】:php - add 3 minutes to date variablephp - 添加 3 分钟到日期变量
【发布时间】:2011-10-18 18:47:20
【问题描述】:

我想将 3 分钟添加到我拥有的日期/时间变量,但我不确定如何执行此操作。我用这样的字符串创建了变量:(顺便说一句,它采用 RFC 2822 日期格式)

$date = 2011-10-18T19:56:00+0200

我使用以下命令将该字符串转换为日期:

$time = date_format(DateTime::createFromFormat("Y-m-d\TH:i:sO", $date), "G:i")

现在,我想为该变量添加 3 分钟,但我不确定如何操作。我之前在我的脚本中使用过以下命令,但这适用于当前日期/时间,所以我不确定如何将它用于我的时间变量:

$currenttime = date('G:i', strtotime('+2 hours'));

那么,如何将三分钟添加到 $time 变量?

我以前试过这个:

$date = '2011-10-18T19:56:00+0200';
$time = DateTime::createFromFormat("Y-m-d\TH:i:sO", $date);
echo date('G:i', strtotime('+3 minutes', $time->getTimestamp()));

但它给出的当前时间加上了 3 分钟,它不使用 $date 变量...

我试过了:

$time = DateTime::createFromFormat("Y-m-d\TH:i:sO", $date);
$time = $time->add(new DateInterval('P2H'));

但是当我这样做时

echo date_format($time, 'G:i');

没有任何回应...

这里有什么帮助吗?

【问题讨论】:

  • 我以为我刚看到这个问题?
  • 是的,虽然没有人回应,所以我提出了一个新问题来解释我已经做了什么,正如你所见,我得到了更好的结果!该死的我喜欢stackoverflow! [我只使用了大约 3 天:P]

标签: php datetime date strtotime


【解决方案1】:

您可以只使用两次strtotime

$date = strtotime('2011-10-18T19:56:00+0200');
echo date('G:i', strtotime('+3 minutes', $date));

【讨论】:

  • 我不明白它是如何工作的?它怎么知道如何解码 $date?
  • strtotime 非常强大,来自manual page:“将任何英文文本日期时间描述解析为 Unix 时间戳”。这意味着它将像您的示例中那样解析日期字符串,并提供添加/减去时间的功能。我刚刚尝试了这个例子,它运行良好:-)
  • 哇。我猜这为我节省了很多额外的冗长和复杂的代码:P 谢谢!我现在就去试试!
【解决方案2】:

代替

$time = DateTime::createFromFormat("Y-m-d\TH:i:sO", $date);
$time = $time->add(new DateInterval('P2H'));

尝试(增加 3 分钟)

$time = DateTime::createFromFormat("Y-m-d\TH:i:sO", $date);
$time->add(new DateInterval('PT3M'));

首先,由于您使用的是 PHP 的 DateTime 类,因此您不需要将 add 方法的输出分配给变量 - 它会修改您传递给构造函数的 DateTime。其次,如果您使用同一个类对时间进行修改,您必须确保在时间定义之前有一个T。对于您的示例,DateInterval('P2H') 无效 - 它应该是 DateInterval('PT2H')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-31
    • 2016-01-07
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多