我一直在努力寻找一个库或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当然擦除这页纸。我会尽力避免这种情况。
现在已经以moment.js格式给了我时间,即2015-06-04T15:09:06Z所以我想我可以通过新的时区插件找到一种方法。
答案 0 :(得分:0)
我的回答:
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);
};
};
};
}
这对我来说是一个令人费解的事。我认为它涵盖了所有情景。