【问题标题】:convert dd-mm-yyyy to yyyy-mm-dd in php在php中将dd-mm-yyyy转换为yyyy-mm-dd
【发布时间】:2013-05-30 05:35:21
【问题描述】:

我尝试使用以下代码将日期格式从 dmy 更改为 ymd,但使用时我得到了错误的日期。

我的代码

$sdate11=date("Y-m-d", strtotime($_POST["txtstartdates"]) );
$sdate111=date("Y-m-d", strtotime($_POST["txtenddates"]) );

插入的日期是

30-05-2013 and  31-05-2013

它返回的日期是

2035-11-03 and 2036-11-02 

您能帮我找出问题所在并解决吗

谢谢。

【问题讨论】:

  • $_POST["txtstartdates"] 和 $_POST["txtenddates"] 中的日期是什么格式的?
  • 格式似乎正确。检查 $_POST["txtstartdates"] 和 $_POST["txtenddates"] 的值
  • 你得到的 2036-11-02 已经是 yyyy-mm-dd。你现在有什么问题?
  • 你的 $_POST["txtstartdates"] 有什么??
  • 检查已编辑的问题我添加了输入的日期

标签: php date date-format


【解决方案1】:

试试 split 喜欢

$a = split('-',$_POST["txtstartdates"]);

或者你甚至可以使用爆炸

$a = explode('-',$_POST["txtstartdates"]);
$my_new_date = $a[2].'-'.$a[1].'-'.$a[0];

这里的 strtotime 不适用于 dd-mm-yyyy 格式

【讨论】:

  • explode() 更可靠。对于split(),有一条消息:This function has been DEPRECATED as of PHP 5.3.0. Relying on this feature is highly discouraged.
【解决方案2】:

您可以为此使用DateTime

$date = DateTime::createFromFormat('d-m-Y', $_POST['txtstartdates']);
echo $date->format('Y-m-d');

$date = DateTime::createFromFormat('d-m-Y', $_POST['txtenddates']);
echo $date->format('Y-m-d');

【讨论】:

    【解决方案3】:

    你不能使用 DateTime 对象将日期转换成你想要的格式吗?

    $DateTime = new DateTime($_POST['FIELD']);
    echo $DateTime->format('Y-m-d'); 
    

    【讨论】:

      【解决方案4】:

      您的代码似乎正确,我不知道为什么它不适合您,您可以在下面尝试 我只从"" 制作了''

      $sdate11=date('Y-m-d', strtotime($_POST['txtstartdates']));
      $sdate111=date('Y-m-d', strtotime($_POST['txtenddates']));
      

      【讨论】:

        【解决方案5】:

        你可以使用单行来做到这一点:

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

        【讨论】:

          猜你喜欢
          • 2016-06-21
          • 1970-01-01
          • 1970-01-01
          • 2023-03-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-05-05
          • 1970-01-01
          相关资源
          最近更新 更多