JS時(shí)間格式問題-new Date(xxxx)

webkit內(nèi)核和blink內(nèi)核對new Date('YYYY-MM-DD hh:mm:ss')處理不同

在小程序開發(fā)中,可能會(huì)遇到android機(jī)器上顯示正常,到蘋果手機(jī)上顯示異常(invalid date)問題,目前發(fā)現(xiàn)的原因是由于不同的機(jī)器使用的解析JS的引擎不同。

在這里使用IE11(webkit), safari(webkit)和chrome(blink)進(jìn)行測試,Edge已經(jīng)基于Chromium開發(fā),故不考慮單獨(dú)測試。

基于chrome的測試結(jié)果

基于IE11的測試結(jié)果

基于safari的測試結(jié)果

知識拓展

各平臺腳本執(zhí)行環(huán)境以及用于渲染非原生組件的環(huán)境是各不相同的:

  • 在 iOS 上,小程序邏輯層的 javascript 代碼運(yùn)行在 JavaScriptCore 中,視圖層是由 WKWebView 來渲染的,環(huán)境有 iOS 12、iOS 13 等;

  • 在 Android 上,小程序邏輯層的 javascript 代碼運(yùn)行在 V8 中,視圖層是由自研 XWeb 引擎基于 Mobile Chrome 內(nèi)核來渲染的;

  • 在 開發(fā)工具上,小程序邏輯層的 javascript 代碼是運(yùn)行在 NW.js 中,視圖層是由 Chromium Webview 來渲染的。

  • 在 PC 上,小程序邏輯層 javascript 和視圖層 javascript 都是用 Chrome 內(nèi)核

  • 在 Mac 上,小程序邏輯層的 javascript 代碼運(yùn)行在 JavaScriptCore 中,視圖層是由 WKWebView 來渲染的,與 iOS 一致

https://developers.weixin.qq.com/miniprogram/dev/framework/runtime/env.html

結(jié)論

在做時(shí)間轉(zhuǎn)換時(shí),避免使用new Date('YYYY-MM-DD hh:mm:ss'),new Date('YYYY.MM.DD') 目前還沒有得到所有瀏覽器的支持。
在內(nèi)部處理時(shí)間時(shí)盡量使用時(shí)間對象,需要轉(zhuǎn)換成字符串的情況下使用格式:YYYY-MM-DD, 如果在對接口或者在顯示的時(shí)候需要修改格式,在最后一步進(jìn)行轉(zhuǎn)換操作。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容