使用时刻.js或时刻时区,匹配标准时间和夏令时



我一直在尝试找到一个库或JavaScript解决方案来匹配美国一年中不同地区的时间。

问题是新闻机构发布文章并更新它们。这篇文章可以在 6 月发布,然后在 12 月出于任何原因更新。

他们坚持在时代结束时需要 EST 和 EDT 的偏好,但不喜欢当案例不匹配时。

到目前为止,我已经尝试了js和时刻时区(下面也有输出(:

var a = moment("2015-06-04T15:09:06Z");
var b = moment("2015-12-03T16:09:07Z");
a.tz(moment.tz.guess()).format('dddd, MMMM Do YYYY, h:mm a z');
// "Thursday, June 4th 2015, 11:09 am EDT"
b.tz(moment.tz.guess()).format('dddd, MMMM Do YYYY, h:mm a z');
// "Thursday, December 3rd 2015, 11:09 am EST”

您可以看到输出具有不匹配的末端(EDT 和 EST(。由于现在是 ST,他们希望两者都在 EST 或 CST 等中说出正确的时间。当是夏令时时,他们希望它以 EDT、CDT、PDT 等方式说出正确的时间。

我也尝试过用JS编写解决方案,但长话短说,我必须使用renderDate函数来放置某人很久以前创建的日期,并且使用document.write当然会擦除页面。我将尽量避免这种情况。

时间已经以瞬间.js格式给了我,即 2015-06-04T15:09:06Z,所以我想我可能会找到一种方法通过新的时区插件来做到这一点。

我的回答:

function dst() {
if (wng_pageInfo.containerType === "S") { 
    var postedTime;
    var updatedTime;
    Date.prototype.stdTimezoneOffset = function() {
        var jan = new Date(this.getFullYear(), 0, 1);
        var jul = new Date(this.getFullYear(), 6, 1);
        return Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());
    }
    Date.prototype.dst = function() {
        return this.getTimezoneOffset() < this.stdTimezoneOffset();
    }
    var today = new Date();
    if (today.dst()) { 
        console.log("Daylight savings time!"); 
        postedTime = moment($('time:first').attr('datetime'));
        postedTimeFormat = postedTime.tz(moment.tz.guess()).format('dddd, MMMM Do YYYY, h:mm a z');
        if (postedTimeFormat.indexOf('ST') !== -1) {
            postedTime = postedTime.tz(moment.tz.guess()).add(1, 'hour').format('dddd, MMMM Do YYYY, h:mm a z');
            postedTime = postedTime.replace('ST','DT');
        } else {
            $('time:first').text(postedTimeFormat);
        };
        updatedTime = moment($('time:last').attr('datetime'));
        updatedTimeFormat = updatedTime.tz(moment.tz.guess()).format('dddd, MMMM Do YYYY, h:mm a z');
        if (updatedTimeFormat.indexOf('ST') !== -1) {
            updatedTime = updatedTime.tz(moment.tz.guess()).add(1, 'hour').format('dddd, MMMM Do YYYY, h:mm a z');
            updatedTime = updatedTime.replace('ST','DT');
            $('time:last').text(updatedTime);
        } else {
            $('time:last').text(updatedTimeFormat);
        };
    } else { 
        console.log("not Daylight savings time"); 
        postedTime = moment($('time:first').attr('datetime'));
        postedTimeFormat = postedTime.tz(moment.tz.guess()).format('dddd, MMMM Do YYYY, h:mm a z');
        if (postedTimeFormat.indexOf('DT') !== -1) {
            postedTime = postedTime.tz(moment.tz.guess()).subtract(1, 'hour').format('dddd, MMMM Do YYYY, h:mm a z');
            postedTime = postedTime.replace('DT','ST');
            $('time:first').text(postedTime);
        } else {
            $('time:first').text(postedTimeFormat);
        }
        updatedTime = moment($('time:last').attr('datetime'));
        updatedTimeFormat = updatedTime.tz(moment.tz.guess()).format('dddd, MMMM Do YYYY, h:mm a z');
        if (updatedTimeFormat.indexOf('DT') !== -1) {
            updatedTime = updatedTime.tz(moment.tz.guess()).subtract(1, 'hour').format('dddd, MMMM Do YYYY, h:mm a z');
            updatedTime = updatedTime.replace('DT','ST');
            $('time:last').text(updatedTime);
        } else {
            $('time:last').text(updatedTimeFormat);
        };
    };
};
}

这对我来说是一个相当令人费解的事情。我认为它涵盖了所有场景。

相关内容

  • 没有找到相关文章

最新更新