如何从日期时间获得时间

时间:2013-11-25 10:16:10

标签: php mysql datetime

我的日期时间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

我不知道问题在哪里。任何人都可以帮我解决这个问题。

谢谢。

7 个答案:

答案 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);
?>

demo

答案 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];
?>