问题提出
Android和iOS在日期格式上的处理方式有所不同,这个不同也影响到小程序的相关日期时间函数,最常用的应该是new Date()了。如下代码:
- date=new Date(‘2020-01-16 22:00:00’).getTime();
上面这行代码在Android和开发者工具(windows/mac)以及开发者工具的真机调试模式(iOS/Android)都不会有问题,但是一上到体验版或者正式版的iOS上手机你获取到的数据就不是你想要的值了!
原因分析
因为iOS只支持2020/01/01 这种日期格式,不支持2020-01-01这样的格式,而现在很多后端处理日期的格式是2020-01-01,发送过来的,或者自己小程序前端生成的也是这种格式,new Date()就会出现兼容性问题。
解决方法
直接替换大法吧,把-换成/,封装成一个自己的方法来new Date()吧。具体代码不用我写你也会的。
总结
这个问题前天一个社区的朋友发了一个相关的帖子,最后查实就是这个原因导致。但是解决这个问题的过程花费了太多时间。因为这个问题很难查出问题所在,因为他在开发者工具和安卓机,以及开发者工具的「真机调试」模式下都不会出现,隐藏得很深。
var reg = /-/g;
time = time && thime.rplace(reg,'/')
感谢楼主,我是开发钉钉遇到的问题,ios设备获取时间日期出错,找了几个小时没找到原因,来微信开放社区一搜就搜到,丁丁开发真恶心,到处都是坑。
这个问题折腾了我两天,在开发者工具、真机调试一切正常,一上传就不能获取日期。谢谢大佬的文章!
多谢大佬文章,帮我照亮前行的路