【问题标题】:How to convert Y-m-d H:i:s to Y-m-d in PHP? [duplicate]如何在 PHP 中将 Y-m-d H:i:s 转换为 Y-m-d? [复制]
【发布时间】:2011-10-24 08:47:59
【问题描述】:

如何在 PHP 中将 Y-m-d H:i:s 转换为 Y-m-d?

我有例如

$date = "2011-08-10 20:40:12";

并想将其转换为只是

$output = "2011-08-10";

提前致谢。

【问题讨论】:

    标签: php date time


    【解决方案1】:
    $old_date = "2011-08-10 20:40:12";
    $new_date = date("Y-m-d", strtotime($old_date));
    echo $new_date;
    
    // Prints 2011-08-10
    

    这应该很有用。

    【讨论】:

      【解决方案2】:

      快速/肮脏:

      $output = substr('2011-08-10 20:40:12', 0, 10);
      

      稍微更健壮:

      $output = date('Y-m-d', strtotime('2011-08-10 20:40:12'));
      

      相当可靠:

      $output = DateTime::createFromFormat('Y-m-d h:i:s', '2011-08-10-20:40:12')->format('Y-m-d');
      

      【讨论】:

      • 在 PHP 5.5.4 的第三种情况下:致命错误:找不到类“日期”,但 DateTime::createFromFormat() 有效。
      • 啊,是的。接得好。谢谢。固定答案。
      【解决方案3】:

      使用explode 对方法进行调整,以便您可以将其变成一个衬里:

      list($date) = explode(' ', $date);

      列表函数对于日期来说非常方便。

      另一个使用列表的例子:

      list($year, $month, $day) = explode(' ', $date);

      此外,您最好在字符串中使用 ' 而不是 ",除非您的字符串包含变量。

      例如

      • '雅达'
      • '冰'
      • “你好 {$bob}”

      我已经厌倦了看到 PHP 文档在他们应该使用“字符串”的示例中使用“字符串”:o)

      【讨论】:

        【解决方案4】:

        试试:

        $date = explode(" ",$date);
        $output = $date[0];
        

        如果用空格隔开,可以用explode来隔开。

        【讨论】:

        • 其给出错误无法转换数组中的字符串偏移量。
        【解决方案5】:

        到目前为止,我更喜欢strftime,因为它的格式输入与 C 和其他语言的格式输入相匹配。

        $output = strftime( '%Y-%m-%d', strtotime( $date) );
        

        【讨论】:

          【解决方案6】:

          可以使用php内置的日期格式功能:

          http://php.net/manual/en/datetime.format.php

          这样做:

          $date = date_format($date, 'Y-m-d');
          

          【讨论】:

            【解决方案7】:

            另一种被认为不太好的解决方案是简单地做一个子字符串:

            $newDate = substr($date, 0, 10)
            

            【讨论】:

            • 该死的你们太快了!这个已经发布了
            • 很高兴看到我不是唯一一个认为这个“简单”的人! :-)
            【解决方案8】:

            嗯,一个简单的方法如下(如果你已经得到了字符串中的日期):

            $output = substr($date, 0, 10);
            

            这意味着您将获取“2011-08-10 20:40:12”中的前 10 个字符,剩下的是“2011-08-10”!

            【讨论】:

              【解决方案9】:
              $date = date("Y-m-d", strtotime($date)); 
              

              仅使用日期格式并将您的字符串转换为时间戳。

              【讨论】:

                【解决方案10】:

                使用strtotime() 轻松完成,并且还能够更改为您可能需要的任何其他日期格式。

                $old_date = "2011-08-10 20:40:12";
                $new_date = date("Y-m-d", strtotime($old_date));
                echo $new_date;
                
                // Prints 2011-08-10
                

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2021-05-16
                  • 1970-01-01
                  • 1970-01-01
                  • 2021-03-09
                  • 2023-03-08
                  • 2012-07-21
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多