如果已知UTC和时区,则为时间分量

时间:2017-02-02 04:00:48

标签: javascript momentjs

我有一个日期时间选择器,它使用getHoursgetMinutes,..来初始化值。如果时区与用户位置一致,它可以正常工作,但我想考虑用户tz与当前浏览器区域设置不同的情况。我可以使用Intl.DateTimeFormat将日期正确格式化为另一个时区。但是,我想得到“America / Chicago”的时间成分值(小时,分钟......),而我的当地时间是“America / New_York”。如果我将偏移设置为“America / Chicago”,那么我需要将时间设为17,而不管当前的当地时区。这可能不使用moment.js,或任何更好的方法来做到这一点。

https://jsfiddle.net/zhvx6mmt/1/

const baseUTCDate = new Date(Date.UTC(2017, 2, 1, 23, 0, 0));
function formatDate(date, timeZone, locale) {
  const options = { weekday: 'long', year: 'numeric', month: 'short',
    day: 'numeric', hour: 'numeric', minute: 'numeric', timeZoneName: 'short' };
  return new Intl.DateTimeFormat(locale, Object.assign(options, {timeZone: timeZone})).format(date);
}

console.log(formatDate(baseUTCDate, "America/New_York",  'en-US')) 
// Wednesday, Mar 1, 2017, 6:00 PM EST

console.log(formatDate(baseUTCDate, "America/Chicago",  'en-US'))
// Wednesday, Mar 1, 2017, 5:00 PM CST

console.log(baseUTCDate.getHours()) // 18 - local time zone is EST

0 个答案:

没有答案