Safari iPhone/iPad 中的 Nan 错误日期

Posted

技术标签:

【中文标题】Safari iPhone/iPad 中的 Nan 错误日期【英文标题】:Nan Error Date in Safari IPhone/IPad 【发布时间】:2014-02-25 04:30:55 【问题描述】:

a : int exp: 1389334939 在 Chrome、FireFox、IE 中:08:53 19/02/2014; 在 Safari (Iphone/Ipad) 中:NaN:NaN NaN/NaN/NaN; 如何解决这个问题?'

function formatDateTime(a) 
    var e = [
        [11, 'sáng'],
        [14, 'trưa'],
        [19, 'chiều']
    ];
    var f = ['chủ nhật', 'thứ hai', 'thứ ba', 'thứ tư', 'thứ năm', 'thứ sáu', 'thứ bảy'];
    var g = new Date();
    var j = new Date(a * 1000);
    var d = Math.floor(g.getTime() / 1000) - a;
    if (d < 60) return d + ' giây trước';
    if (d < 3600) return Math.floor(d / 60) + ' phút trước';
    if (d < 43200) return Math.floor(d / 3600) + ' tiếng trước';
    var h = j.getHours();
    var m = fill2(j.getMinutes());`enter code here`
    if (d < 518400) 
        var b = 'tối';
        for (i = 0; i < 3; i++) if (h < e[i][0]) 
            b = e[i][1];
            break
        
        d = (g.getDay() + 7 - j.getDay()) % 7;
        var k = '';
        var sdate = true;
        if (d == 0) 
            k = 'hôm nay';
            sdate = false;
         else if (d == 1) 
            k = 'hôm qua';
            sdate = false;
         else k = f[j.getDay()];
        var result = (h % 12).toString() + ':' + m + ' ' + b + ' ' + k;
        if (sdate) result += ', ' + fill2(j.getDate()) + '/' + fill2(j.getMonth() + 1) + '/' + j.getFullYear();
        return result;
    
    h = fill2(h);
    return h + ':' + m + ' ' + fill2(j.getDate()) + '/' + fill2(j.getMonth() + 1) + '/' + j.getFullYear();


function fill2(value) 
    return value < 10 ? ('0' + value) : value;

非常感谢!

【问题讨论】:

你想达到什么目的(输入-输出)?您将什么值传递给 formatDateTime(a) 您是否有演示该问题的 jsFiddle? 输入是整数:1389334939 输出:08:53 19/02/2014 在 Safari (Iphone/Ipad) 中输出:NaN:NaN NaN/NaN/NaN; 1389334939 是什么?自 1970 年 1 月 1 日 00:00:00 UTC 以来的毫秒数? 日期时间的总秒数。 //var j = new Date(a * 1000);自 1970 年 1 月 1 日 00:00:00 UTC 以来的毫秒数? 【参考方案1】:

尝试阅读有关 javascript 的 ´Date´ 对象的 MDN 页面。

Javascript

function pad(value) 
    return value < 10 ? ('0' + value) : value;


function formatDateTime(a) 
    var dateFromMillis = new Date(a * 1000),
        hours = pad(dateFromMillis.getUTCHours()),
        minutes = pad(dateFromMillis.getUTCMinutes()),
        date = pad(dateFromMillis.getUTCDate()),
        month = pad(dateFromMillis.getUTCMonth() + 1),
        year = dateFromMillis.getUTCFullYear();

    return hours + ':' + minutes + ' ' + date + '/' + month + '/' + year;


console.log(formatDateTime(1389334939))

输出

06:22 10/01/2014

开启jsFiddle

如果您想在本地时间使用它,请从方法中删除 UTC

【讨论】:

以上是关于Safari iPhone/iPad 中的 Nan 错误日期的主要内容,如果未能解决你的问题,请参考以下文章

CSS 背景位置在 Mobile Safari (iPhone/iPad) 中不起作用

为啥在 iOS Safari Mobile (iPhone / iPad) 中没有触发模糊事件?

CSS 跨浏览器问题 - 旋转在 Safari、Ipad 和 Iphone 上不起作用

在 Iphone、Ipad 和使用 Safari 浏览器中 - 警报“使用 myapp 打开”

在移动 safari (html5) 中为离线 iphone/ipad 网络应用程序缓存视频内容?

Safari iphone/ipad 在新链接上的“鼠标悬停”在前一个被替换为 javascript 后