我正在使用一项服务,让我在Unix时间(1970年1月1日午夜,英格兰格林威治)午夜时间播放电视节目的广播时间。我需要在javascript中将此转换为东部标准时间(美国)。我需要考虑夏令时,以及客户的时钟可能设置为东部标准时间以外的其他时间。我确定此代码之前已经编写过。有人能指出我吗?
答案 0 :(得分:3)
您将找到的是无法转换为特定时区,但只要您的用户位于所需的时区,就可以使用:
var date = new Date();
date.setTime(unixTime * 1000);
生成的日期对象将显示在运行浏览器的计算机的时区中:
window.console.log(date.toString())
的产率:
"Thu Jun 25 2009 09:48:53 GMT-0400 (EDT)"
对我来说无论如何)
答案 1 :(得分:0)
https://web.archive.org/web/1/http://articles.techrepublic%2ecom%2ecom/5100-10878_11-6016329.html
看起来有一个改变时区的解决方案,但看起来你必须自己做数学运算。没有,setTimezone或setLocale方法。
答案 2 :(得分:0)
我编写了一些代码,这些代码将GMT毫秒转换为类似日期的对象,可以查询东部标准时间值。它可以处理夏令时。
ESTDate = function(millis){
if(isNaN(parseInt(millis))) {
throw new Error("ESTDate must be built using a number");
}
var MILLIS_PER_DAY = 1000 * 60 * 60 * 24;
var gmtDate = new Date(millis);
var clockSetDate = function(month){
var date = new Date(0);
date.setUTCFullYear(gmtDate.getUTCFullYear());
date.setUTCMonth(month);
date.setUTCHours(2);
while(date.getUTCDay() != "0"){
date.setTime(
date.getTime() + MILLIS_PER_DAY
);
};
return date;
}
var startStandarTimeDate = clockSetDate(2);
var endStandardTimeDate = clockSetDate(10);
date = new Date(millis);
var estOffset = 60 * 60 * 1000 * 4;
var dltOffset = (
(startStandarTimeDate < date) &&
(date < endStandardTimeDate)
) ? 0: 60 * 60 * 1000;
date.setTime(date.getTime() - (estOffset + dltOffset));
var self = {
getDate: function(){
return date.getUTCDate();
},
getDay:function(){
return date.getUTCDay();
},
getFullYear:function(){
return date.getUTCFullYear();
},
getHours:function(){
return date.getUTCHours();
},
getMilliseconds:function(){
return date.getUTCMilliseconds();
},
getMinutes:function(){
return date.getUTCMinutes();
},
getMonth:function(){
return date.getUTCMonth();
},
getSeconds:function(){
return date.getUTCSeconds();
}
}
return self;
}