2012-06-28 28 views
0

我需要使用php將日期和時間(GMT)轉​​換爲時間戳。下面的代碼顯示了我目前使用:使用php將日期和時間轉換爲時間戳的最佳方式是什麼?

<?php 
$date="2012-06-29 10:50"; 
$timestamp = strtotime($date); 
echo $timestamp; 
?> 

然而,當我在網上轉換器(http://www.epochconverter.com)測試的時間戳,生成的日期是29日2012年6月,8 :50格林尼治標準時間,或2小時前。 strtotime()函數是否可能不完全準確,僅僅是時間的估計?如果是這樣,是否有更好的方法可以用來獲得準確的時間?

謝謝。

+1

這是服務器的時間,如果你不與服務器共享相同的時區,即你的服務器在歐洲,你不在歐洲,那麼你將產生不同的時間,我認爲 – ianace

回答

0

strtotime假設您要在服務器本地時間內轉換字符串,因此如果服務器時區爲兩小時,則結果將爲wll。

the manual的意見建議一對夫婦的解決方案,可以追加UTC到你的約會:

$timestamp = strtotime($date.' UTC'); 

或者你可以更改腳本的默認時區(這將適用於所有其它時間功能!) :

date_default_timezone_set('UTC'); 
$timestamp = strtotime($date); 

作爲最後的選擇,你可以嘗試date_create_from_format它允許您指定究竟是什麼格式的字符串是:

$datetime = date_create_from_format('Y-m-d H:i', $date, new DateTimeZone('UTC')); 

$timestamp = date_format($datetime, 'U'); 
// Alternatively (thanks Herbert) - 5.3+ only 
$timestamp = date_timestamp_get($datetime); 
+0

感謝您的信息化身。我沒有考慮到它正在轉換到我的服務器當地時間。 – user1267980

+0

[DateTime :: getTimestamp](http://www.php.net/manual/en/datetime.gettimestamp.php) – Herbert

+0

Good call @Herbet,加入! –