2010-08-03 42 views

回答

17

像這樣:

$date = '2pm'; 
echo date('H:i:s', strtotime($date)); 

結果:

14:00:00 

和:

$date = '2am'; 
echo date('H:i:s', strtotime($date)); 

結果:

02:00:00 

更多信息:

更新:

將其轉換回:

$date = '14:00:00'; 
echo date('HA', strtotime($date)); 

結果:

14PM 
+1

對不起,這不考慮DST轉換。你應該前綴'date_default_timezone_set(「UTC」);' – Artefacto 2010-08-03 20:10:14

+0

你也可以告訴我如何隱藏它?我的意思是從14:00:00到2:00 – 2010-08-03 20:12:24

+0

@Zeeshan Rang:請看我最新的答案。 – Sarfraz 2010-08-03 20:20:56

1

(這應該是一個評論,但它太長)

原因Sarfraz的解決方案是不完整的,因爲它沒有考慮DST transaitions。在DST轉換期間,某些小時可能不存在。

考慮時區爲歐洲/里斯本和我們2010年3月28日,當DST踢。

當我們打到凌晨1點,我們從UTC更改+ 0 UTC + 1,即,我們跳過1小時。例如:

date_default_timezone_set("Europe/Lisbon"); 
$date = '2010-03-28 1am'; 
$date2 = '2010-03-28 1:30am'; 
echo date('H:i:s', strtotime($date)),"\n"; 
echo date('H:i:s', strtotime($date2)),"\n"; 

 
02:00:00 
02:30:00 

因此,Sarfraz解決方案將失敗除非當你說你要1am轉換爲01:00,這些時間總是指當天在服務器的時區

+0

當然好點,更新到答案。 – Sarfraz 2010-08-03 20:20:03

+0

@Sarfraz我認爲你不瞭解我的評論。更改爲UTC的優點是沒有時區轉換,因此「1am」總是轉換爲「01:00」。當然,這可能是也可能不是OP想要的行爲,他沒有說「1am」是指「今天凌晨1點」還是「通常凌晨1點」。在第一種情況下,將時區更改爲相關的時區是解決方案,否則應將其更改爲UTC。 – Artefacto 2010-08-03 20:22:45

+0

好吧然後只有OP知道他需要什麼,但是你的評論在這裏很有用:) – Sarfraz 2010-08-03 20:27:12

相關問題