我有一个脚本,我试图将UTC日期/时间转换为本地时区。在Chrome和IE / Edge中,这一切似乎都运行良好,但是在Firefox中显示为“无效日期”。堆栈上还有其他几个问题,但似乎没有一个可以解决我的特定需求。

我的脚本这样做了...

获取日期,该日期是Fabrik在Joomla中提出的特定格式。 (我对此格式几乎没有控制权)

它看起来像这样:

2017-07-02 20:57


然后,我将新日期创建为UTC,并将其转换为本地时区。

toLocalString方法:

$(document).ready(function() {
        $('.plg-date > .fabrikElement > div').not('.fabrikSubElementContainer').each(function() {
            if($(this).text().length > 0) {
                var newdate = new Date($(this).text() + " UTC");
                var options = {
                    year: 'numeric',
                    month: 'numeric',
                    day: 'numeric',
                    hour: '2-digit',
                    minute: '2-digit',
                    timeZoneName: 'short'
                }
                $(this).text(newdate.toLocaleString('en-US', options));
            }
        })
    });


moment.js方法:

$(document).ready(function() {
    $('.plg-date > .fabrikElement > div').not('.fabrikSubElementContainer').each(function() {
        if($(this).text().length > 0) {
            var date = new Date($(this).text() + " UTC");
            var newdate = moment(date).format('ddd MMM DD YYYY h:mm A')
            $(this).text(newdate);
        }
    })
});


这两种方法都会导致Firefox中的日期无效。建议?

最佳答案

使用一下,您可以使用moment.utclocal()

var newdate = moment.utc($(this).text()).local().format('ddd MMM DD YYYY h:mm A')


moment.utc将您的输入解析为UTC值,而local()将其转换为本地时间。

关于javascript - 使用.toLocaleString()和moment.js的Firefox中的无效日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44929926/

10-11 22:36
查看更多