2013-11-25 38 views
2

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

我没有得到哪里是problem.Can任何一个可以帮助我在此。

谢谢。

+1

工作正常,我在http://sandbox.onlinephpfunctions.com/ –

回答

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"; 
+1

+ 1 for you.Better than my answer..nice too – Gautam3164

+1

@Shankar Damodaran谢谢。它的工作。 – snehal

+0

@Downvoter。谨慎解释? –

1

实际的代码,你想要做

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

demo

0

您可以尝试什么样explode

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

这可以替代

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

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

Here你可以看到,你的代码将无法在PHP版本正常工作波纹管5.2.6,甚至在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