【问题标题】:PHP Date format when converting from user input (code igniter)从用户输入转换时的 PHP 日期格式(代码点火器)
【发布时间】:2025-12-31 01:00:07
【问题描述】:

我正在获取用户在 jQuery UI 日期选择器中输入的值,并将其转换为 php 日期以便在数据库中插入,如下所示:

$date_from  = post('date_valid_from');    
$date_from  = date('Y-m-d', strtotime($date_from));

如果输入格式为美国格式 (mm/dd/yyyy),这可以正常工作,但是由于我的系统将被英国人使用,因此需要以英国格式 (dd/mm/yyyy) 输入.将英国日期转换为 php 日期时,月份和日期会互换(2014 年 2 月 1 日 - 2014 年 1 月 2 日 - 变为 2014 年 1 月 2 日,2014 年 2 月 28 日 - 2014 年 2 月 28 日 - 变为 1970 年 1 月 1 日)。

我是否可以覆盖默认日期格式以使用英国格式?

(如果我可以设置 CI 配置设置,则此项目使用 Code Igniter)

【问题讨论】:

    标签: php codeigniter date


    【解决方案1】:

    请改用DateTime()。它比date()strtotime() 更灵活:

    $date_from = DateTime::createFromFormat('d/m/Y', $date_from);
    $date_from = $date_from->format('Y-m-d');
    

    如果你想同时支持这两种格式(mm/dd/yyyydd/mm/yyyy),只需换掉DateTime::createFromFormat() 的第一个参数。使用变量会很容易做到。

    【讨论】:

      【解决方案2】:

      这是 PHP 本地化的一个很好的例子。

      要根据区域设置格式化本地时间/日期,您可以使用 strftime

      http://php.net/strftime

      然后可以通过 strptime

      使用特定格式解析字符串

      http://php.net/manual/en/function.strptime.php

      有关本地化的更多信息,您也可以查看此链接。

      http://php.net/manual/en/function.setlocale.php

      【讨论】: