我的日期时间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
我不知道问题在哪里。任何人都可以帮我解决这个问题。
谢谢。答案 0 :(得分: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
答案 1 :(得分:4)
采用OOP方式
<?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";
答案 2 :(得分:1)
实际上代码完全符合您的要求
<?php
$date = "30-12-1899 9:25:52 AM";
$date = strtotime($date);
echo date('H:i:s', $date);
?>
答案 3 :(得分:1)
你能试试吗,
$date = "1899-12-30 9:25:52 AM";
echo $start_time = date("h:i:s A", strtotime($date));
OR
$date = "30-12-1899 9:25:52 AM";
$dtime = new DateTime($date);
echo $dtime->format("h:i:s A");
答案 4 :(得分:1)
结果是01:00:00
,因为在您的PHP版本中,strtotime()
函数返回无效的整数。更有可能返回值false
,当您通过date()
函数格式化false
时,您将获得1970-01-01 00:00:00
。你得到时间01:00:00
,因为你有时区偏移,你可能在UTC+1
时区。
Here 您可以看到,即使在x64计算机上,您的代码也无法在PHP版本5.2.6
上正常运行,结果将不可靠。
最佳选择是升级您的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
答案 5 :(得分:0)
您可以尝试使用explode
$date = "30-12-1899 9:25:52 AM";
$date_arr = explode(' ',$date);
echo $date_arr[1];
答案 6 :(得分:0)
这可以是另类
<?php
$date = "30-12-1899 9:25:52 AM";
$date = explode(' ',$date);
echo date[1].' '.date[2];
?>