2012-03-28 169 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時間戳。