日期/時間組件包含時間和日期信息的所有輸入、輸出和存儲。它的代碼可以追溯到早期版本的PHP 4實現(xiàn),并且經(jīng)過了部分PHP 5改進。
在一年多的WP版本迭代中,我們運行了一個名為“ wp_date”的項目來修復(fù)和改進該組件,這些改進將集成到 WordPress 5.3。
- 所有現(xiàn)有代碼將具有更正確和可靠的操作。我們修復(fù)了錯誤,添加了單元測試,并更正了許多函數(shù)的內(nèi)聯(lián)文檔。
- WP 5.3+代碼將可以訪問新的API函數(shù),以方便使用和實現(xiàn)PHP互操作性。
新的API函數(shù)
通過將核心版本所需的PHP版本提高到5.6,我們改進了組件的API。
統(tǒng)一時區(qū)檢索
wp_timezone_string()無論(timezone_string/?gmt_offset選項) 設(shè)置如何,都可以通過一種單一的方式檢索站點時區(qū)。可能返回Region/Location字符串或?±NN:NN偏移量。現(xiàn)在,兩者都是內(nèi)核支持的PHP版本的有效輸入。wp_timezone()檢索站點時區(qū)作為DateTimeZone對象。
PHP互操作性
current_datetime()檢索當前時間作為DateTimeImmutable對象。get_post_datetime()檢索文章時間作為DateTimeImmutable對象。get_post_timestamp()?檢索文章時間作為Unix時間戳。
逐步淘汰WP時間戳
日期/時間組件依賴于所謂的“ WordPress時間戳”,即帶有時區(qū)偏移量的Unix時間戳的總和。這導(dǎo)致許多錯誤,并且與上游PHP或任何外部系統(tǒng)缺乏互操作性。內(nèi)聯(lián)文檔錯誤地將它們稱為Unix時間戳。
沒有向后兼容性完成,就不可能刪除WP時間戳。但是我們在以下方面取得了重大進展:
- 減少其在核心的使用;
- 更正無效的內(nèi)聯(lián)文檔;
- 提供使用真實Unix時間戳的新API。
不再推薦
- 不要將時間作為WP時間戳獲取:
current_time( 'timestamp' )get_post_time( 'U' )
- 不要根據(jù)WP時間戳本地化時間:
date_i18n( DATE_RFC3339, $timestamp + $offset )
- 不要持久性地存儲WP時間戳;
- 不要比較WP時間戳。
推薦的方式
- 檢索時間作為Unix時間戳或
DateTimeImmutable對象:time()current_datetime()get_post_datetime()get_post_timestamp()
- 根據(jù)Unix時間戳本地化時間:
wp_date( DATE_RFC3339, $timestamp )
- 存儲時間精確的Unix時間戳或格式,例如?
DATE_RFC3339?; - 比較
DateTimeInterface同一時區(qū)中的Unix時間戳,對象或字符串可比較的日期。
小結(jié)
日期/時間核心組件已收到急需的修復(fù)程序和一系列改進。帶有時間和日期的WordPress平臺上的代碼將更加方便和可靠。
如果你對以上改進或組件有疑問,請關(guān)注WordPress Slack中的#core-datetime頻道。
聲明:本站所有文章,如無特殊說明或標注,均為本站原創(chuàng)發(fā)布。任何個人或組織,在未征得本站同意時,禁止復(fù)制、盜用、采集、發(fā)布本站內(nèi)容到任何網(wǎng)站、書籍等各類媒體平臺。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進行處理。




