我有一个日期时间选择器,它使用getHours
,getMinutes
,..来初始化值。如果时区与用户位置一致,它可以正常工作,但我想考虑用户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