收藏
回答

wxs中getDate(datestring)在IOS下有BUG

框架类型 问题类型 终端类型 微信版本 基础库版本
小程序 Bug 客户端 IOS全系列 1.9.90
<wxs module='format'>
    var date = function(t) {
        var regexp = getRegExp('-', 'g');
        t = t.replace(regexp, '/');
        var now = getDate().getTime();
        var time = getDate(t).getTime();
        if (time > now) {
            return '刚刚';
        } else {
            var e = Math.round((now - time) / 1000);
            if (e < 60) return '刚刚';
            else if (e < 1800) return Math.round(e / 60) + '分钟前';
            else if (e < 3600) return '半小时前';
            else if (e < 86400) return Math.round(e / 3600) + '小时前';
            else if (e < 86400 * 7) return Math.round(e / 86400) + '天前';
            else if (e < 86400 * 30) return Math.round(e / (86400 * 7)) + '周前';
            else if (e < 86400 * 365) return Math.round(e / (86400 * 30)) + '个月前';
            else return Math.round(e / (86400 * 365)) + '年前';
        }
        return '';
    };
    module.exports = {
        date: date
    };
</wxs>
<text class='time'>{{format.date(addtime)}}</text>

目前我已经通过regexp正则替换掉了“-”为“/”。

默认情况下数据库拿到的日期格式为“2018-08-30 12:00:00”,如果不替换“-”的话,在IOS下是不能通过getDate(datestring)获取到日期对象的。Android下两种格式均表现正常,这是否是个BUG呢?还求官方解答。

回答关注问题邀请回答
收藏

2 个回答

  • Eric Huang
    Eric Huang
    2018-08-30

    这是js引擎对日期的解析不一致造成的。

    2018-08-30
    有用
    回复 6
    • 再见,电脑崽
      再见,电脑崽
      2018-08-31

      替换为“/”是否能兼容所有设备呢。

      2018-08-31
      回复
    • Eric Huang
      Eric Huang
      2018-08-31回复再见,电脑崽

      应该是可以的 你可以试一下看看 我这边没有android设备

      2018-08-31
      回复
    • 以梦为马
      以梦为马
      2019-03-18回复Eric Huang

      替换 - 为 /,ios解析也不对,这个是因为什么呢

      2019-03-18
      回复
    • 2019-06-05回复以梦为马

      楼主现在解决了吗?发现换成/ ,ios还是解析有问题

      2019-06-05
      回复
    • Geefib
      Geefib
      2019-11-04
      +1有什么解决方案吗?
      2019-11-04
      回复
    查看更多(1)
  • @
    @
    2018-10-15

    这个是解析引擎不同 造成的 苹果浏览器也会有这个情况,只要返回的时间精确到小时 就转换出NAN 得替换 -  为 /

    2018-10-15
    有用
    回复
登录 后发表内容