JS时间格式问题-new Date(xxxx)

作者: 张中华 | 来源:发表于2021-07-24 07:27 被阅读0次

webkit内核和blink内核对new Date('YYYY-MM-DD hh:mm:ss')处理不同

在小程序开发中,可能会遇到android机器上显示正常,到苹果手机上显示异常(invalid date)问题,目前发现的原因是由于不同的机器使用的解析JS的引擎不同。

在这里使用IE11(webkit), safari(webkit)和chrome(blink)进行测试,Edge已经基于Chromium开发,故不考虑单独测试。

基于chrome的测试结果

基于IE11的测试结果

基于safari的测试结果

知识拓展

各平台脚本执行环境以及用于渲染非原生组件的环境是各不相同的:

  • 在 iOS 上,小程序逻辑层的 javascript 代码运行在 JavaScriptCore 中,视图层是由 WKWebView 来渲染的,环境有 iOS 12、iOS 13 等;

  • 在 Android 上,小程序逻辑层的 javascript 代码运行在 V8 中,视图层是由自研 XWeb 引擎基于 Mobile Chrome 内核来渲染的;

  • 在 开发工具上,小程序逻辑层的 javascript 代码是运行在 NW.js 中,视图层是由 Chromium Webview 来渲染的。

  • 在 PC 上,小程序逻辑层 javascript 和视图层 javascript 都是用 Chrome 内核

  • 在 Mac 上,小程序逻辑层的 javascript 代码运行在 JavaScriptCore 中,视图层是由 WKWebView 来渲染的,与 iOS 一致

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

结论

在做时间转换时,避免使用new Date('YYYY-MM-DD hh:mm:ss'),new Date('YYYY.MM.DD') 目前还没有得到所有浏览器的支持。
在内部处理时间时尽量使用时间对象,需要转换成字符串的情况下使用格式:YYYY-MM-DD, 如果在对接口或者在显示的时候需要修改格式,在最后一步进行转换操作。

相关文章

网友评论

    本文标题:JS时间格式问题-new Date(xxxx)

    本文链接:https://www.haomeiwen.com/subject/yxnemltx.html