js 时间戳转换在 ios 中出现错误

2018-12-12 14:34:43 +08:00
 allinoneok

这段转换时间戳为 xxx 分钟前的函数在 firefox,chrome 浏览器中正常显示,在 ios 中出现错误 显示 NaN-NaN-NaN,为什么会出现这么奇怪的问题?

function getunix(timestamp, flag) {
    //timestamp 为时间戳,flag 为 ymd 时转为日期显示 否则显示 xxx 前
    function zeroize(num) {
        return (String(num).length == 1 ? "0" :"") + num;
    }
    var curTimestamp = parseInt(new Date().getTime() / 1e3);
    //当前时间戳
    var timestampDiff = curTimestamp - timestamp;
    // 参数时间戳与当前时间戳相差秒数
    var curDate = new Date(curTimestamp * 1e3);
    // 当前时间日期对象
    var tmDate = new Date(timestamp * 1e3);
    // 参数时间戳转换成的日期对象
    var Y = tmDate.getFullYear(), m = tmDate.getMonth() + 1, d = tmDate.getDate();
    var H = tmDate.getHours(), i = tmDate.getMinutes(), s = tmDate.getSeconds();
    if (flag == "ymd") {
        var newDate = new Date((curTimestamp - 86400) * 1e3);
        // 参数中的时间戳加一天转换成的日期对象
        return Y + "-" + zeroize(m) + "-" + zeroize(d);
    }
    if (timestampDiff < 60) {
        // 一分钟以内
        return "现在";
    } else if (timestampDiff < 3600) {
        // 一小时前之内
        return Math.floor(timestampDiff / 60) + " min ago";
    } else if (curDate.getFullYear() == Y && curDate.getMonth() + 1 == m && curDate.getDate() == d) {
        return "今天";
    } else {
        var newDate = new Date((curTimestamp - 86400) * 1e3);
        // 参数中的时间戳加一天转换成的日期对象
        if (newDate.getFullYear() == Y && newDate.getMonth() + 1 == m && newDate.getDate() == d) {
            return "昨天";
        } else if (curDate.getFullYear() == Y) {
            return zeroize(m) + "-" + zeroize(d);
        } else {
            return Y + "-" + zeroize(m) + "-" + zeroize(d);
        }
    }
}
3573 次点击
所在节点    JavaScript
3 条回复
nekoyaki
2018-12-12 16:18:29 +08:00
我记得之前前端同事说过,好像 safari 的时间需要特殊处理,记不清细节了……
icebela
2018-12-21 10:12:37 +08:00
这个有兼容问题,ios 上处理一下 new Date("2018-12-215 20:30:00".replace(/-/g,'/')).getTime()就可以了
e8c47a0d
2018-12-28 15:36:33 +08:00
Safari 只支持 ISO8601 格式的时间字符串。(日期时间专家路过)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/516879

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX