2012-03-28 248 views

回答

41

E.g.

<?php 
$s = '8/29/2011 11:16:12 AM'; 
$dt = new DateTime($s); 

$date = $dt->format('m/d/Y'); 
$time = $dt->format('H:i:s'); 

echo $date, ' | ', $time; 

看到http://docs.php.net/class.datetime


编辑:为了保持AM/PM格式使用

$time = $dt->format('h:i:s A'); 
1

这应该做的伎俩:

$mystring_datetime = ....; 
$dt = DateTime::createFromFormat('m/d/Y H:i:s A', $mystring_datetime); 
$d = $dt->format('m/d/Y'); 
$t = $dt->format('H:i:s A'); 

你也可以做像这样的东西,但它“不是首选方式:

$mystring_datetime = ....; 
list($date, $time) = explode(' ', $mystring_datetime, 2); 

现在,$date$time有适当的值...

+0

thnx回答它的工作很好..... – user1153176 2012-03-29 10:34:48

2

如果您的PHP版本已经够新,退房date_parse(),并返回该数组。然后,您可以使用相关条目格式化日期或时间部分。

3

这可能不是最干净的方式,但您可以使用爆炸(注意,这里没有任何验证)。这将比正确的日期操作更快。

$str = '8/29/2011 11:16:12 AM'; 
$dates = explode(' ', $str); 
$dat = $dates[0]; 
$time = $dates[1]; 
3

只要日期在1/1/1970之后,你可以使用strtotime函数 -

<?php 

$s = strtotime('8/29/2011 11:16:12 AM'); 

$date = date('m/d/Y', $s); 
$time = date('H:i:s A', $s); 

?> 

http://php.net/manual/en/function.strtotime.php

的strtotime创建一个从你传递给它的字符串一个UNIX时间戳。