无论用户的时区如何,如何将日期始终设置为东部时间

时间:2016-03-24 17:21:02

标签: javascript datetime timezone

我有一个服务器在unix时间给我的日期:1458619200000

注意:您标记为“重复”的其他问题不会显示如何从UNIX TIME到达那里。我在javascript中寻找一个具体的例子。

但是,我发现根据我的时区,我会得到两个不同的结果:

d = new Date(1458619200000)
Mon Mar 21 2016 21:00:00 GMT-0700 (Pacific Daylight Time)

//现在我将电脑设置为东部时间,我得到了不同的结果。

d = new Date(1458619200000)
Tue Mar 22 2016 00:00:00 GMT-0400 (Eastern Daylight Time)

那么我怎样才能显示日期:1458619200000 ...总是在东部时间(3月22日),不管我的电脑时区如何?

3 个答案:

答案 0 :(得分:12)

您可以使用Javascript中的getTimezoneOffset()功能轻松处理时区偏移。例如,

def some_callback(a, b, c=None):
    print(a,b,c)

Button(text="Do not press", 
    command=lambda: some_callback(1, 2, 3))

但是,后面显示的区域设置字符串不会更改。这个答案的来源是this post。希望这有帮助!

答案 1 :(得分:5)

Moment.js(http://momentjs.com/timezone)是你的朋友。

你想做这样的事情:

var d = new Date(1458619200000);
var myTimezone = "America/Toronto";
var myDatetimeFormat= "YYYY-MM-DD hh:mm:ss a z";
var myDatetimeString = moment(d).tz(myTimezone).format(myDatetimeFormat);

console.log(myDatetimeString); // gives me "2016-03-22 12:00:00 am EDT"

答案 2 :(得分:0)

对于夏时制,东部时间比UTC落后4小时,这就是其偏移量为-4x60 = -240分钟的原因。因此,当日光未激活时,偏移量将为-300。 EasternTimeOffset变量值是此处要注意的关键点。请在附加的图片中查看此代码。

       var offset = new Date().getTimezoneOffset();// getting offset to make time in gmt+0 zone (UTC) (for gmt+5 offset comes as -300 minutes)
        var date = new Date();
        date.setMinutes ( date.getMinutes() + offset);// date now in UTC time

        var easternTimeOffset = -240; //for dayLight saving, Eastern time become 4 hours behind UTC thats why its offset is -4x60 = -240 minutes. So when Day light is not active the offset will be -300
        date.setMinutes ( date.getMinutes() + easternTimeOffset);

You can see this code in action here in this image

相关问题