イギリスのタイムゾーンで表示される現地時間を取得するためのjsがあります。
var d = new Date(); // local system time (whatever timezone that is)
var dUK = new Date(d.toLocaleString('en-GB', { timeZone: 'Europe/London' })); // UK timezone (covers BST too)
次のエラーをスローするIE 11(sigh ...)を除くすべてのブラウザで正常に動作します。
Option value 'EUROPE/LONDON' for 'timeZone' is outside of valid range. Expected: ['UTC']
誰か提案はありますか? IEをサポートするフィドルの例については、 http://jsbin.com/dawaqocuvi/1/edit?html,js,console,output を参照してください。
はい、上記のとおり、IE 11はほとんどのIntl APIをサポートしていますが、特定のtimeZoneの使用をサポートしていません: http://kangax.github.io/compat- table/esintl /#test-DateTimeFormat_accepts_IANA_timezone_names
これは、webpackのrequire.ensure
を使用して、Intl.DateTimeFormat関数のtimeZoneサポートだけをポリフィルする方法の例です。
const fillIntlDateTimeFormatTimezone = () => new Promise((resolve) => {
try {
new Intl.DateTimeFormat('en', {
timeZone: 'America/Los_Angeles',
timeZoneName: 'long'
}).format();
return resolve();
} catch (error) {
require.ensure(['date-time-format-timezone'], (require) => {
require('date-time-format-timezone');
return resolve();
}, 'DateTimeFormatTimezone');
}
});
これは、この時点でIE 11のみ)であるはずのtimeZoneプロパティの指定をサポートしていないブラウザに対してのみ、ポリフィルをロードする必要があります。