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

新手上路,请多包涵

我有一个服务器给我的 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 日)?

原文由 Shai UI 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 512
2 个回答

您可以使用 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)

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

原文由 Shekhar Chikara 发布,翻译遵循 CC BY-SA 3.0 许可协议

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"

原文由 Ashwin Balamohan 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题