Safari 下 Date 不支持”2018-01-01 00:00:00“
前两天发现一个小程序的问题,Android 正常,iPhone 出错。我们都知道,Debug 的关键在定位,如果是某些特殊环节,不常见的错误,就会浪费很多时间。
这个 Bug 也是如此,反复拉锯之后终于发现,问题出在下面这句:
let a = new Date(`${date} 00:00:00`);
date 是服务器端返回的值,我是把它和后面的 00:00:00 连起来,记作某天零点零刻,和今天的零点零刻做减法,计算日期差,并按照日期差来决定接下来的逻辑。这段代码在开发工具(包括 Mac)、Android 手机上运行都正常,只有在 iPhone 上不正常,于是我打开 Safari——苹果这点做得不错,桌面版 Safari 环境和 iOS 几乎没有差别,该出的问题一定会出——果然复现了这个问题。
按照规范,中国的日期格式是:“2018/01/01”,Safari 只支持这个格式。而 2018-01-01 和 2018-01-01T00:00:00 ISO 格式,Safari 也支持,但是会以格林威治时间为准,和我们有8小时的时差。Chrome 和 Android 内嵌的 WebView(基于 Blink 或者 Webkit)则都支持,所以在本地和 Android 手机上没有问题。
相关文章
解决 React Native + Expo 面对 Google Play 的 16KB memory page 问题
最近开始尝试开发 App,倒不是什么复杂的大项目,只是把朋友网站上的功能移植到移动端。技术栈仍然是 React […]
2025-09-064 分钟
2024 中国大陆搭建 React Native 开发环境
我从 Web 前端做起,后来发展到全栈,至今十几年。我觉得大陆的网络环境对 Web 开发还算比较友好,除去 G […]
2024-09-016 分钟
移动网页高度自适应最佳实践
移动 Web 开发就要在“螺蛳壳里做道场”。移动设备限于屏幕尺寸,不得已左支右绌,既要多呈现内容,又要保证功能 […]
2024-06-168 分钟


