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.