评论

微信小程序中的日期格式在Android和iOS真机下兼容性问题的坑

Android和iOS在日期格式上的处理方式有所不同,这个不同也影响到小程序的相关日期时间函数,最常用的应该是new Date()了。如下代码:

问题提出

Android和iOS在日期格式上的处理方式有所不同,这个不同也影响到小程序的相关日期时间函数,最常用的应该是new Date()了。如下代码:

  1. 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()吧。具体代码不用我写你也会的。

总结

这个问题前天一个社区的朋友发了一个相关的帖子,最后查实就是这个原因导致。但是解决这个问题的过程花费了太多时间。因为这个问题很难查出问题所在,因为他在开发者工具和安卓机,以及开发者工具的「真机调试」模式下都不会出现,隐藏得很深。

最后一次编辑于  01-16  
点赞 1
收藏
评论

1 个评论

  • 龙雨溪
    龙雨溪
    01-16

    var reg = /-/g;

    time = time && thime.rplace(reg,'/')

    01-16
    赞同 1
    回复 2
    • Admin²⁰²⁰
      Admin²⁰²⁰
      01-16
      哈哈哈,又是一个踩过坑的人吧。对的。
      01-16
      回复
    • Admin²⁰²⁰
      Admin²⁰²⁰
      01-16
      这行代码背后很有故事!
      01-16
      回复
登录 后发表内容