【问题标题】:How convert date format in php如何在php中转换日期格式
【发布时间】:2014-03-25 11:06:21
【问题描述】:

大家好,我有这样的约会

25 March 2014 - 16:45

我想把这个日期转换成这种格式,请帮忙

2014-03-25 16:45:00

我试试这个$creation = date('Y-m-d H:i:s',strtotime('25 March 2014 - 16:45')); 但它不起作用

【问题讨论】:

标签: php codeigniter date datetime-format


【解决方案1】:

我试试这个$creation = date('Y-m-d H:i:s',strtotime('25 March 2014 - 16:45')); 但它不起作用

您的代码不起作用的原因是因为'25 March 2014 - 16:45' 不是strtotime() 可以解析的格式。

strtottime() 擅长处理各种格式,但它绝对不能应付任何事情;变化太多了。

我建议您改用 PHP 的 DateTime 类。此类有一个名为createFromFormat() 的方法,它允许您指定传入日期字符串的格式。这使它更容易解析,并允许使用其他方式可能无法识别的格式,例如您的格式。

试试这个:

$date = DateTime::createFromFormat('j F Y - H:i', '25 March 2014 - 16:45');
echo $date->format('Y-m-d H:i:s');

【讨论】:

    【解决方案2】:

    使用 PHP DateTime

    字符串中的“2014 年 3 月 25 日 - 16:45”中有“-”,因此 DateTime 无法读取它

    所以解决方法是

    $str = "25 March 2014 -16:45";
    
    $date = new DateTime(str_replace("-","",$str));
    echo $date->format('Y-m-d H:i:s');
    

    【讨论】:

    • 您使用的是哪个 PHP 版本?它需要 (PHP 5 >= 5.2.0)
    【解决方案3】:

    我已经用你的字符串成功地尝试了以下操作:

    $a = strptime('25 March 2014 - 16:45', '%d %B %Y - %R');
    $time = mktime(
        $a["tm_hour"],
        $a["tm_min"],
        $a["tm_sec"],
        $a["tm_mon"]+1,
        $a["tm_mday"],
        $a["tm_year"]+1900
    );
    $converted = date('Y-m-d H:i:s',$time);
    

    【讨论】:

    • 请注意 strptime() 与 Windows 无关。无论如何,您可以在任何其他操作系统上使用该脚本。
    【解决方案4】:

    试试这个:

    $creation = date('Y-m-d H:i:s',strtotime('25 March 2014 16:45'));
    

    【讨论】:

    • 但是从 post 值来看是这样的 2014 年 3 月 25 日 - 16:45
    • 输出显示为 2014-03-25 16:45:00,strtotime 函数调用中的破折号使日期无效,将其恢复为 1969。您可以过滤字符串以删除破折号使其合规。为简单起见,请查看 str_replace 函数。
    猜你喜欢
    • 1970-01-01
    • 2016-11-04
    • 2014-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    相关资源
    最近更新 更多