【问题标题】:How to get time from datetime如何从日期时间获取时间
【发布时间】:2013-12-09 23:14:43
【问题描述】:

我有日期时间30-12-1899 9:25:52 AM,这里只需要9:25:52 AM。这次我想插入mysql数据库,这个字段的数据类型是时间。

我的代码是:

<?php
$date = "30-12-1899 9:25:52 AM";
$date = strtotime($date);
echo date('H:i:s', $date);
?> 

执行时返回:

01:00:00

我不知道问题出在哪里。谁能帮我解决这个问题。

谢谢。

【问题讨论】:

标签: php mysql datetime


【解决方案1】:

实际上代码完全符合您的要求

<?php
 $date = "30-12-1899 9:25:52 AM";
 $date = strtotime($date);
 echo date('H:i:s', $date);
?>

demo

【讨论】:

    【解决方案2】:

    做面向对象的方式

    <?php
    $date1="30-12-1899 9:25:52 AM";
    $format = 'd-m-Y H:i:s A';
    $date = DateTime::createFromFormat($format, $date1);
    echo $date->format('H:i:s A') . "\n";
    

    【讨论】:

      【解决方案3】:

      你可以试试explodelike

      $date = "30-12-1899 9:25:52 AM";
      $date_arr = explode(' ',$date);
      echo $date_arr[1];
      

      【讨论】:

        【解决方案4】:

        这可以替代

        <?php
        $date = "30-12-1899 9:25:52 AM";
        $date = explode(' ',$date);
        echo date[1].' '.date[2];
        ?> 
        

        【讨论】:

          【解决方案5】:

          你可以试试这个,

          $date = "1899-12-30 9:25:52 AM";
          
          echo $start_time = date("h:i:s A", strtotime($date));
          

          $date = "30-12-1899 9:25:52 AM";
          $dtime = new DateTime($date);
          echo $dtime->format("h:i:s A");
          

          【讨论】:

            【解决方案6】:
            $s = '30-12-1899 9:25:52 AM';
            $dt = new DateTime($s);
            
            $date = $dt->format('d-m-Y');
            $time = $dt->format('h:i:s A');
            
            echo $time;
            

            在此处查看详细信息http://docs.php.net/class.datetime

            【讨论】:

              【解决方案7】:

              您得到01:00:00 作为结果,因为在您的PHP 版本上,strtotime() 函数返回无效整数。更有可能返回值false,当您通过date() 函数格式化false 时,您将得到1970-01-01 00:00:00。你得到时间01:00:00 因为你有时区偏移,你可能在UTC+1 时区。

              Here你可以看到,你的代码在5.2.6以下的PHP版本上不能正常工作,即使在x64机器上,结果也不可靠。

              最好的选择是升级您的 PHP 版本(或更改虚拟主机)。但是如果你没有这个选项,你可以使用字符串函数来断开和连接日期和时间部分,like this

              $date = "30-12-1899 9:25:52 AM";
              sscanf($date, "%d-%d-%d %d:%d:%d %s", $d, $m, $Y, $g, $i, $s, $A);
              $h = $A == 'AM' ? $g : $g + 12;
              echo "$Y-$m-$d $h:$i:$s";  # 1899-12-30 9:25:52
              echo "$h:$i:$s";           # 9:25:52
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2020-06-02
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2023-03-22
                • 2012-01-12
                相关资源
                最近更新 更多