Javascript - Unix到特定时区的时间

时间:2009-06-25 13:40:24

标签: javascript

我正在使用一项服务,让我在Unix时间(1970年1月1日午夜,英格兰格林威治)午夜时间播放电视节目的广播时间。我需要在javascript中将此转换为东部标准时间(美国)。我需要考虑夏令时,以及客户的时钟可能设置为东部标准时间以外的其他时间。我确定此代码之前已经编写过。有人能指出我吗?

3 个答案:

答案 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;
}