评论

微信小程序中的日期格式在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()吧。具体代码不用我写你也会的。

总结

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

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

5 个评论

  • coding
    coding
    2020-01-16

    var reg = /-/g;

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

    2020-01-16
    赞同 3
    回复 3
  • Blue
    Blue
    2022-10-31

    感谢楼主,我是开发钉钉遇到的问题,ios设备获取时间日期出错,找了几个小时没找到原因,来微信开放社区一搜就搜到,丁丁开发真恶心,到处都是坑。

    2022-10-31
    赞同
    回复 1
    • SG
      SG
      2023-09-13
      这个是属于IOS这边的问题了,Safari这边不支持ISO这种格式
      2023-09-13
      回复
  • 吴强
    吴强
    2020-08-08

    这个问题折腾了我两天,在开发者工具、真机调试一切正常,一上传就不能获取日期。谢谢大佬的文章!

    2020-08-08
    赞同
    回复 2
    • Admin ²º²³
      Admin ²º²³
      2020-08-08
      不客气,这是我应该做的~能帮到你是我的荣幸!希望咱们能继续在社区这个大家庭保持交流。
      2020-08-08
      回复
    • HenryYang
      HenryYang
      2022-01-10
      想请问下,为什么真机调试和上传后表现不一致呢?我也遇到这个问题
      2022-01-10
      回复
  • 小肥羊🍊
    小肥羊🍊
    2020-06-29

    多谢大佬文章,帮我照亮前行的路

    2020-06-29
    赞同
    回复
  • 小肥羊🍊
    小肥羊🍊
    2020-02-29
    楼上昵称亮了!
    2020-02-29
    赞同
    回复
登录 后发表内容