2013-10-12 37 views
1

我有日期和時間,如:PHP先進的strtotime轉換

12-Oct-13 09:15 PM AEST 
10-Oct-13 07:05 PM AEST 

我用的strtotime()PHP函數像這樣將它轉換爲datetime對象如下:

echo $datetime=strtotime('12-Oct-13 09:15 PM AEST'); 

但得到空的結果。我的想法是上述日期時間轉換爲其他格式,如:

12-10-2013 09:15 PM 
10-10-2013 07:05 PM 

誰能幫我,爲了正確地轉換爲datetime對象。然後我在我的代碼中使用它。

+0

問題在於「AEST」部分,當你從日期中刪除它,strtotime()就像你期望的那樣工作。 –

+2

你有沒有考慮過使用datetime格式創建? http://www.php.net/manual/en/datetime.createfromformat.php –

+0

DateTime是要走的路。 –

回答

5

PHP不支持AEST時區,這就是爲什麼strtotime()返回false。見list of supported TZ's

您可以將輸入仍要轉換爲所需要的輸出:

$input = '12-Oct-13 09:15 PM AEST'; 
$dt = DateTime::createFromFormat('d-M-y H:i A *', $input); 
echo $dt->format('d-m-Y h:i A'); # 12-10-2013 09:15 PM 

,或者因爲AEST時區從UTC偏移+10:00,只是字符串替換:

$input = '12-Oct-13 09:15 PM AEST'; 
$input = str_replace(' AEST', ' +1000', $input); 
$dt = new DateTime($input); 
print_r($dt); 
/* 
DateTime Object 
(
    [date] => 2013-10-12 21:15:00 
    [timezone_type] => 1 
    [timezone] => +10:00 
) 
*/ 

,或者切斷時區部分來自字符串:

$input = '12-Oct-13 09:15 PM AEST'; 
$input = substr($input, 0, strrpos($input, ' ')); 

echo date_create($input)->format('d-m-Y h:i A'); # 12-10-2013 09:15 PM 
# or 
echo date('d-m-Y h:i A', strtotime($input)); # 12-10-2013 09:15 PM 
+0

巧妙使用'*'。 +1 –

+1

@AmalMurali:tnx固定錯別字;) –

+0

謝謝我使用strtotime(str_replace('AEST','',$ date))這將返回我想要的東西 –