2013-09-25 38 views
6

我試圖解析日期時間字符串組合日期和時間,想知道是否有一個更聰明的方式PHP解析日期時間字符串巧妙

樣本數據

9/3/2013 8:50:05 AM 
9/4/2013 1:42:28 PM 
9/11/2013 12:01:21 PM 
....  

這裏是我的「M doing..Looking直通日期時間字符串列表

<?php 
    $x = "9/3/2013 8:50:05 AM" 
    $ExDt = str_getcsv(trim($x," "); 
    $ExDate = $ExDt[0]; 
    $ExTm = $ExDt[1] . " " . $ExDt[2]; 
    $ExTime = date("H:i:s", strtotime($ExTm)); // Change to 24 hour format 

    echo $ExDate; 
    echo $ExTime; 

    ?> 
+1

http://php.net/manual/en/datetime轉換.createfromformat.php – zerkms

+0

'strtotime(「2013/9/3 8:50:05 AM」)'不是簡單的工作? –

+0

那麼你在這裏改變的唯一的事情是把時間變成24小時? –

回答

2
$dt = new DateTime('9/3/2013 8:50:05 AM'); 
echo $dt->format('m/d/Y'); 
echo $dt->format('H:i:s'); 
+1

+1爲OO版本 – Michael

+0

我仍然使用'createFromFormat',因爲該日期可能是3月9日或9月3日。 – Phil

+0

@Phil,請參閱http://www.php.net/manual/en/datetime.formats .date.php在使用'/'時,這些仍然會被正確解析 – Rob

0
<?php 
$x = "9/3/2013 8:50:05 AM"; 
$time = strtotime($x); 
echo date('m/d/Y', $time), "\n"; 
echo date('H:i:s', $time), "\n"; 

See the result here

read more about date time format

+0

strtotime($ x);不工作。 –

+2

@TimB,你看過這裏的結果嗎? http://codepad.org/l4TnWBvq – srain

+0

輸出是什麼? – srain

1
$time = strtotime('9/3/2013 8:50:05 AM'); 
echo date('H:i:s',$time); // 08:50:05 
echo date('Y-m-d',$time); // 2013-03-09 
+0

strtotime('9/3/2013 8:50:05 AM'); 沒有爲我工作。 –

7

我覺得安全與此(時區沒有考慮到的例子)

$start = '25/12/2013 10:13:46'; 
$new_date = DateTime::createFromFormat('d/m/Y H:i:s', $start); 
echo $new_date->format('Y-m-d H:i:s'); 
+0

Afaik。 'createFromFormat'只轉換'09/04/2013 01:42:28',但不轉換'9/4/2013 1:42:28'。至少它不適合我。 :S – inf3rno