【问题标题】:convert date format in php like 6th of November 2017 to 2017-11-6 [duplicate]将 php 中的日期格式转换为 2017 年 11 月 6 日至 2017-11-6 [重复]
【发布时间】:2017-11-08 06:32:28
【问题描述】:

我想使用 php 将日期格式转换为另一种日期格式 2017 年 11 月 6 日2017-11-6

我试过了

$newDate = date("Y-m-d", strtotime('6th of November 2017'));

但它总是返回01-01-1970

【问题讨论】:

    标签: php codeigniter date


    【解决方案1】:

    当您从特定格式创建日期时,请使用日期的createFromFormat

    $date = DateTime::createFromFormat('jS \o\f F Y', '6th of November 2017');
    echo $date->format('Y-m-d');
    

    注意:如果您的格式中有字符串,则必须转义该字符串(使用\)才能进行对话

    DEMO

    【讨论】:

    • date("Y-m-d", strtotime("6th November 2017")) 这不起作用,这就是我问的原因
    • @B.Desai 正确。我忘记了。已为您的帖子投票
    • 你的代码很棒!但是当日期减少或增加时,我又遇到了一个问题,它会像第 1 次第 2 次第 3 次和第 4 次一样在工作之后发生变化,但是当它是第 1 次第 2 次或第 3 次时呢?我在创建日期时这样做了 $data[] = $date->format("jS \of F Y");
    • 尝试更新代码 @UdayKumar 将 \t\h 更改为 S,这将为您提供正确的格式
    • 非常感谢!
    【解决方案2】:

    6th of换成6th就可以了..

    $newDate = date("Y-m-d", strtotime('6th November 2017'));
    echo ($newDate);
    

    结果

    2017-11-06
    

    【讨论】:

      【解决方案3】:

      试试这个:

      $newDate = date("Y-m-d", strtotime("6 November 2017"));

      【讨论】:

      • 你改变了实际的字符串。这是6th of....。所以你的代码将不起作用。在这里查看:- eval.in/895125
      • OP 本身声明 $newDate = date("Y-m-d", strtotime('6th of November 2017')); 不起作用
      • @Alive to Die 是的,但他正在使用 strtotime() ,他提供了无效的格式 6th of November 2017 ,它不起作用。因此,我用正确的格式更正了上述内容。
      • 这就是为什么他要问一个问题,如果格式也不正确,那么他将如何寻求正确的解决方案。检查其他答案
      • 他必须改变功能还是改变格式由他决定。
      猜你喜欢
      • 2019-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-16
      • 2013-07-09
      • 2013-06-25
      • 2018-02-24
      相关资源
      最近更新 更多