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

问题描述 投票:0回答:4

我有一个服务器给我的 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 日),无论我的计算机的时区如何?

javascript datetime timezone
4个回答
24
投票

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

var dt = new Date(1458619200000);
console.log(dt); // Gives Tue Mar 22 2016 09:30:00 GMT+0530 (IST)

dt.setTime(dt.getTime()+dt.getTimezoneOffset()*60*1000);
console.log(dt); // Gives Tue Mar 22 2016 04:00:00 GMT+0530 (IST)

var offset = -300; //Timezone offset for EST in minutes.
var estDate = new Date(dt.getTime() + offset*60*1000);
console.log(estDate); //Gives Mon Mar 21 2016 23:00:00 GMT+0530 (IST)

但是,后面表示的语言环境字符串不会改变。这个答案的来源在这篇文章。希望这有帮助!


13
投票

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"

3
投票

为了夏令时,东部时间比 UTC 晚 4 小时。这就是为什么它的偏移量是 -4x60 = -240 分钟。因此,当日光不活跃时,偏移量将为 -300。

offset
变量的值是这里要注意的关键点。请在附图中查看此代码的实际运行情况。

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


0
投票
new Date().toLocaleString("en-US", { timeZone: "America/New_York" });

尝试一下,您可以在线找到时区列表

© www.soinside.com 2019 - 2024. All rights reserved.