我已經看到了一些關於此問題的問題,但不是一個明確的答案...當將字符串轉換爲unix時間戳時,strtotime()將使用爲PHP設置的默認時區。強制php strtotime使用UTC
但是,我想將字符串轉換爲UTC中的unix時間戳。既然這樣做沒有參數,那麼怎麼做呢?
我想要轉換的字符串是:2011-10-27T20:23:39,它已經在UTC。我想將它表示爲UTC中的unix時間戳。
謝謝
我已經看到了一些關於此問題的問題,但不是一個明確的答案...當將字符串轉換爲unix時間戳時,strtotime()將使用爲PHP設置的默認時區。強制php strtotime使用UTC
但是,我想將字符串轉換爲UTC中的unix時間戳。既然這樣做沒有參數,那麼怎麼做呢?
我想要轉換的字符串是:2011-10-27T20:23:39,它已經在UTC。我想將它表示爲UTC中的unix時間戳。
謝謝
設置使得strtotime
呼叫前系統默認的時區:
date_default_timezone_set('UTC');
echo strtotime('2011-10-27T20:23:39')."\n";
// Proof:
print_r(getdate(strtotime('2011-10-27T20:23:39')));
// IMPORTANT: It's possible that you will want to
// restore the previous system timezone value here.
// It would need to have been saved with
// date_default_timezone_get().
我意識到這個問題很古老,但我發現了另一個可能有用的選項。 而不是設置,然後恢復PHP的時區,你可以指定時區作爲字符串的一部分傳遞給的strtotime像這樣:
echo date_default_timezone_get();
output: America/Chicago
echo gmdate('Y-m-d H:i:s', strtotime('2011-10-27T20:23:39'));
output: 2011-10-28 01:23:39
echo gmdate('Y-m-d H:i:s', strtotime('2011-10-27T20:23:39 America/Chicago'));
output: 2011-10-28 01:23:39
echo gmdate('Y-m-d H:i:s', strtotime('2011-10-27T20:23:39 UTC'));
output 2011-10-27 20:23:39
注:我在PHP 5.5.9,但這應該工作在任何PHP版本。
這個答案比接受的答案要好得多。 +1 – Druckles
這很簡單,但您必須注意用戶輸入。如果你只是發送一個用戶輸入的內容,你永遠不會知道他們是否會包含時區或會導致字符串混亂的東西。 –
也可以考慮使用'new DateTimeZone('UTC');',參見http://stackoverflow.com/a/34651091/1066234 –