2013-09-25 36 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