2016-03-13 37 views
0

由於從客戶端發送: '星期一2016年3月14日15:00:00 GMT + 1100(澳洲東部時間)'妄圖javascript日期時間字符串隱蔽到PHP的DateTime

$btime = $jd["bookingtime"]; 

$btime = substr($btime, 0, strpos($btime, '(')); 

$jobdetail->bookingtime = date('Y-m-d h:i:s', strtotime($btime)); 

記錄都存儲在MySQL數據庫因此:2016-03-14 15:00:00

+0

你要什麼格式來存儲它作爲? –

+0

年/月/日24小時:分鐘:秒 – LaserBeak

+0

那麼,您是否按GMT時區存儲時間? echo $ jobdetail-> bookingtime會給你。 –

回答

1

由於您的PHP設置爲UTC默認時區,因此您可以使用date_default_timezone_set()進行設置並找到您的時區。看看here for australian timezones

如果你有權訪問你的php.ini文件,你可以在其中設置參數date.timezone到你需要的時區。如果未設置該設置,則默認情況下爲UTC。如果沒有設置時區,在新版本的php中使用date函數時,AFAIK應該有迴應。

除此之外,您可以按照UTC提示存儲它,並根據您的需要轉換爲本地時間。如果用戶來自多個不同的時區,UTC會更容易。

日期的時區自動的轉換你date.timezone或功能date_default_timezone_set()設置好的:

$d = 'Mon Mar 14 2016 15:00:00 GMT+1100'; 

$date = date('Y-m-d h:i:s', strtotime($d)); 
var_dump($date);      // echoes '2016-03-14 04:00:00' 
var_dump(date_default_timezone_get()); // echoes 'UTC' 

date_default_timezone_set ('Europe/Zurich'); 
var_dump(date_default_timezone_get());  // echoes 'Europe/Zurich' 
$date = date('Y-m-d h:i:s', strtotime($d)); // echoes '2016-03-14 05:00:00' 
var_dump($date); 
+0

服務器是否自動將它從我的問題中提到的格式轉換爲從客戶端接收的日期時間字符串到UTC時間,還是必須手動完成每個dateTime和時區類型來自客戶端/瀏覽器? – LaserBeak