【问题标题】:Changing ISO 8601 date string to 24 hours from its current value将 ISO 8601 日期字符串从其当前值更改为 24 小时
【发布时间】:2016-09-26 15:47:13
【问题描述】:

我有一个这样的 ISO 8601 字符串:

2016-09-26T20:38:15.793Z

现在,我想将日期提前 24 小时,但格式为“Y-m-d H:i:s”。我尝试了以下方法:

//$date1 is ISO 8601 string
date("Y-m-d H:i:s", strtotime($date1, '+24 hours'));

但不幸的是,这不起作用。我是在正确的轨道上还是完全错误的?

谢谢

【问题讨论】:

  • 不工作如何

标签: php sql date


【解决方案1】:

使用DateTime 类。创建一个新实例,为其添加 24 小时并对其进行格式化。

$dt = new DateTime('2016-09-26T20:38:15.793Z');
$dt->modify('+24 hours'); 
echo $dt->format('Y-m-d H:i:s');

https://3v4l.org/CHmmm

【讨论】:

    【解决方案2】:

    如果您想使用strototime,则参数顺序错误,您需要先将字符串转换为时间戳,这需要再次应用strtotime,或者将其与+24 修饰符。它应该是这样的:

    echo date("Y-m-d H:i:s", strtotime('+24 hours', strtotime($date1)));
    

    或者像这样:

    echo date("Y-m-d H:i:s", strtotime("$date1+24 hours"));
    

    (我还建议改用 DateTime 类,但仅供参考。)

    【讨论】:

      【解决方案3】:

      尝试使用日期时间类的子方法http://php.net/manual/en/datetime.sub.php

      【讨论】:

        猜你喜欢
        • 2019-02-27
        • 1970-01-01
        • 2021-01-17
        • 2017-07-25
        • 1970-01-01
        • 2016-12-14
        • 1970-01-01
        • 2021-03-17
        相关资源
        最近更新 更多