問題描述
我有一個 WordPress cron 工作,定期發送電子郵件,作為選項發送時保存時間戳,我想在設置頁面上顯示一個日期。像 「最後一封電子郵件是在’x’ 發送的」 。我在美國的西海岸,所以我們現在的時間是 UTC 的七個小時。
我從 date_i18n() 的預期輸出,傳遞它的時間戳,將是本地格式化的日期,從 UTC 調整七個小時。但是,它返回 UTC 的時間。即使想要獲得當前時間也不會返回我認為是預期的輸出。
例如:echo date_i18n('F d, Y H:i'); 輸出 2013 年 4 月 5 日 11:36,但 echo date_i18n('F d, Y H:i',time()); 輸出 2013 年 4 月 5 日 18:36 。
這是有意的嗎?如何從預先存在的時間戳返回本地格式的日期?感謝任何幫助。
最佳解決方案
我知道我已經三個月了,但你想要的功能是 get_date_from_gmt()。
該函數接受 Y-m-d H:i:s 格式的 GMT /UTC 日期作為第一個參數,您希望的日期格式作為第二個參數。它會將您的日期轉換為 「設置」 屏幕上設置的本地時區。
使用示例
echo get_date_from_gmt( date( 'Y-m-d H:i:s', $my_unix_timestamp ), 'F j, Y H:i:s' );
次佳解決方案
從 codex:
current_time(‘timestamp’) should be used in lieu of time() to return the blog’s local time. In WordPress, PHP’s time() will always return UTC and is the same as calling current_time(‘timestamp’, true).
嘗試這個:
define( 'MY_TIMEZONE', (get_option( 'timezone_string' ) ? get_option( 'timezone_string' ) : date_default_timezone_get() ) );
date_default_timezone_set( MY_TIMEZONE );
echo date_i18n('F d, Y H:i', 1365194723);
這將在腳本的持續時間內將默認的 PHP 日期設置為 WP 的 timezone_string 選項 (如果可用) 。
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。