Javascript 如何将日期始终设置为东部时间,而不考虑用户';s时区

Javascript 如何将日期始终设置为东部时间,而不考虑用户';s时区,javascript,datetime,timezone,Javascript,Datetime,Timezone,我有一个服务器在unix时间给我的日期:1458619200000 注意:您标记为“重复”的其他问题没有说明如何从UNIX时间到达那里。我正在寻找javascript中的一个特定示例。 然而,我发现,根据我的时区,我会有两种不同的结果: d = new Date(1458619200000) Mon Mar 21 2016 21:00:00 GMT-0700 (Pacific Daylight Time) //现在我把电脑调到东部时间,结果不同了 d = new Date(1458619200

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

注意:您标记为“重复”的其他问题没有说明如何从UNIX时间到达那里。我正在寻找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日)?

Moment.js()是你的朋友

您希望执行以下操作:

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"

通过使用Javascript中的函数,您可以轻松地处理时区偏移。比如说,

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)

不过,后面表示的区域设置字符串不会更改。这个答案的来源是在。希望这有帮助

对于夏令时,东部时间比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);

检查:我想这就是你想要的:我看了所有这些,但没有很好地理解。我想要一个代码示例来说明我具体要做的事情。。。他们没有回答。这一个的可能重复是对的,我不想使用Momenties,但它为我下载库、添加到源代码、更改所有现有代码以适应它增加了一个问题,等等等等,与我要找的相反:这是两行javascript,我不知道。但是+1你的答案bc,如果我没有其他答案,我会用这个:谢谢。您可以编写自己的函数来实现这一点,但这需要重新设计轮子。请参阅我的代码库,矩+矩时区为应用程序的大小增加了500kb,因为它不可树抖动。如果您想要更小的捆绑包大小,moment可能不是最好的解决方案。您的unix时间是否总是在EST时区?如果是这样,则需要为输入添加正确的GMT偏移量(-4小时),然后在创建新的日期对象之前,通过将本地时区偏移量()添加回unix时间,将其转换为本地时区。您将时间设置为什么,utc?如何将其设置为特定的timezone@foreyez从UTC时间开始,很容易转换为任何固定时区。您可以使用
setTime()
简单地在日期对象中添加或减去时区偏移量。例如,如果您的固定时区是UTC+10(澳大利亚东部标准时间),
+600*60*1000
将是您可以添加到时间中的偏移量;若要将其转换为Eastern,则不考虑夏令时。例如,东部时间在冬天是-5小时,在夏天是-4小时。我们在佛罗里达州还有夏时制吗?