Surgically polyfills timezone support in Intl.DateTimeFormat
API
Some browsers do not support arbitrary time zone in Intl.DateTimeFormat API (becuase its optional as per ECMA-402 standard). This polyfill is only to bring this support. Polyfill contains historical timezone data, CLDR data & tiny code to polyfill this support.
- Install via nodejs:
npm i date-time-format-timezone
And then import in your code:
require('date-time-format-timezone'); // polyfill is ready
- In the browser
include everything:
<script src="https://unpkg.com/date-time-format-timezone@latest/build/browserified/date-time-format-timezone-complete-min.js">
or include individual files:
<script src="https://unpkg.com/date-time-format-timezone@latest/build/browserified/date-time-format-timezone-no-data-min.js">
<script src="https://unpkg.com/date-time-format-timezone@latest/build/browserified/data/locales/locale-en-US-POSIX.js">
<script src="https://unpkg.com/date-time-format-timezone@latest/build/browserified/data/metazone.js">
<script src="https://unpkg.com/date-time-format-timezone@latest/build/browserified/data/timezones/tzdata-america-los_angeles.js">
This polyfill can add this support.
new Intl.DateTimeFormat('hi', {
timeZone: 'Asia/Calcutta',
timeZoneName:'long',
year: 'numeric',
month: 'numeric',
day: 'numeric',
hour: 'numeric',
minute: 'numeric',
}).format(new Date());
"११/१/२०१७, पू १:२६ भारतीय मानक समय"
new Intl.DateTimeFormat('en', {
timeZone: 'America/Los_Angeles',
timeZoneName:'long',
year: 'numeric',
month: 'numeric',
day: 'numeric',
hour: 'numeric',
minute: 'numeric',
}).format(new Date());
"1/10/2017, 12:00 PM Pacific Standard Time"
API | Support |
---|---|
Intl.DateTimeFormat | ✅ |
Date.toLocaleString | ✅ |
Date.toLocaleTimeString | ✅ |
Date.toLocaleTimeString | ✅ |
Generate latest data from www.iana.org.
git checkout https://github.com/yahoo/date-time-format-timezone.git
npm install
grunt download
grunt
npm publish
Minified | gzipped | |
---|---|---|
complete | 2.64MB | 322KB |
top zones1 only no locale | 369.32KB | 71KB |
all zones no locale | 303.19KB | 75KB |
top zones1 top locale2 | 641.86KB | 148KB |
*1. top zones are custom listed timezones here.
*2. top locales are custom listed locales here.