【问题标题】:Drop in Replacement for strtotime() in PHP在 PHP 中替换 strtotime()
【发布时间】:2012-01-23 00:30:11
【问题描述】:

我目前有以下代码

$TimelineEvents[$i]["Date"] = date("F j, Y", strtotime($Date));

这很好用...直到您想要存储 1970 年 1 月 1 日之前的日期。

因为我正在制作时间线,所以这是一个相当重要的功能。我可以使用什么替换功能?

谢谢 丹尼

【问题讨论】:

    标签: php date strtotime


    【解决方案1】:

    您应该使用DateTime 类,它将满足您的需求:

    这些函数允许您从运行 PHP 脚本的服务器获取日期和时间。您可以使用这些函数以多种不同方式格式化日期和时间。

    日期和时间信息在内部存储为 64 位数字,因此支持所有可以想象的日期(包括负年份)。 范围从过去大约 2920 亿年到未来相同

    例子:

    $date = DateTime::createFromFormat("Y-m-d", $Date);
    $TimelineEvents[$i]["Date"] = $date->format("F j, Y");
    

    【讨论】:

    • 我的原始数据是 MySQL Date 类型。例如。 2012 年 12 月 12 日。请给我一些示例代码好吗?
    • 很好的答案。谢谢你:)
    • 该死,收到此错误 - 致命错误:在第 43 行的 /hermes/web05/b244/moo.worldwidelighthouses/Timeline.php 中调用未定义的方法 DateTime::createFromFormat()。看起来像我的主机不支持此功能。编辑:任何其他有类似兼容性问题的人请参阅上面的答案。
    【解决方案2】:

    您可以改用DateTime class

    $dateTime = new DateTime($Date);
    $TimelineEvents[$i]["Date"] = $dateTime->format('F j, Y');
    

    【讨论】:

    • 太棒了,与@Tim Cooper 的答案非常相似,但与低于 5.3 的 PHP 版本兼容 :)
    • @DanTonyBrown:是的,PHP 有时令人沮丧:(
    • 自我注意:对于DateTime 理解的标准格式,您不需要从Tim Cooper's answer 中所示的格式创建。这就是两者的本质区别。
    猜你喜欢
    • 1970-01-01
    • 2014-02-28
    • 1970-01-01
    • 2011-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多