【问题标题】:PHP - Changing date formatPHP - 更改日期格式
【发布时间】:2011-03-01 23:32:38
【问题描述】:

我正在从正在运行的 SQL 查询中获得结果,该查询输出以下日期 ($mydate) (05/02/2011) .... 它的格式为 dd/mm/yyyy ...当我运行时

date('l jS \of F Y',strtotime($mydate))

我得到一个与输入完全不同的日期,我收集这是因为我没有使用 mm/dd/yyyy 格式。

我将如何更换它以使其正常工作?

干杯。

【问题讨论】:

    标签: php


    【解决方案1】:

    您可以使用strptime() 来解析日期/时间格式。您还可以将日期字符串转换为 YYYY-MM-DD,它总是由 strtotime 正确解析。例如:

    $date = implode('-', array_reverse(explode('/', $date)));
    

    但我同意其他答案。先看看你的数据库设置。几乎所有数据库都可以直接输出 YYYY-MM-DD 格式,并且大多数默认情况下都会这样做。看看为什么你的没有。

    【讨论】:

      【解决方案2】:

      我想知道为什么您的日期从您的数据库中以 dd/mm/yyyy 形式出现,您使用的是什么类型的数据库?如果是 MySQL,则 DATE 字段应输出 YYYY-MM-DD,这将与 strtotime() 一起正常运行。

      您可以explode('/', $mydate)手动拆分dd、mm和yyyy,然后重构一个新的日期字符串,或者直接使用mktime()得到的数字。

      【讨论】:

        【解决方案3】:

        Herestrtotime() 可以理解的格式列表。

        哪个 SQL 输出如此奇怪的日期格式?还是您自己格式化日期?

        【讨论】:

          【解决方案4】:

          如果它总是以这种格式出现,你可以使用

          $newtime = preg_replace("/\d\d\/\d\d/\d\d\d\d/", "$3/$2/$1", $date);
          

          要将其转换为 yyyy/mm/dd,然后将其插入 strtotime()

          这绝对不是最优雅的解决方案,我实际上建议重做数据库(创建一个新列,运行脚本来读取每个条目,生成新日期,然后输入,删除旧日期字段,然后重命名新的,因此只需执行一次)。

          【讨论】:

            猜你喜欢
            • 2012-08-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-06-05
            • 2016-11-22
            相关资源
            最近更新 更多