包详细信息

timezone-soft

spencermountain392.8kMIT1.5.2

interpret abbreviated and informal timezone names

自述文件

parse abbreviated, sloppy, and informal timezone names
npm install timezone-soft
by Spencer Kelly
(formerly called 'spacetime-informal')

js import soft from 'timezone-soft' // get an IANA tz from user input let timezones = soft('milwaukee')[0] /*[{ iana: 'America/Chicago', standard: { name: 'Central Standard Time', abbrev: 'CST' }, daylight: { name: 'Central Daylight Time', abbrev: 'CDT' } } ]*/ IANA timezone codes are the official reference for timezone information, and is what you should use, whenever possible. Humans though, are goofballs, and use a whole different informal scheme: --- - In (North) America: PST, MST, EST... - in Europe (lately): WEST, CEST, EEST... - in Africa: EAT, CAT, WAST... - in Australia: AWST, AEDT, ACST... --- #### these line-up with the IANA codes sometimes. #### ...other times they don't. These names also collide - 'IST' is used to mean: - 'Indian Stardard Time' - 'Irish Stardard Time' - 'Israeli Stardard Time' These names also produce all-sorts of ambiguities, regarding DST-changes- Both Winnipeg and Mexico City are CST, but have a much different DST schedule: image (thanks timeanddate.com!) -of course, there's a bunch of political/historical/disputed stuff going on, too. Apologies if this library steps into that unknowingly. ...so that's what we're trying to fix - to 'soften' this exchange, between human and IANA timezone nomenclature, using some opinionated-but-common-sense rules and decision-making. It was originally built for use in the spacetime timezone library. ### Usage js const soft = require('timezone-soft') soft('EST') // 'America/New_York' soft('central') // 'America/Chicago' soft('venezuela') // 'America/Caracas' soft('south east asia') // 'Asia/Bangkok' Typescript/Deno/Webpack: js import soft from 'timezone-soft' it was built to be as forgiving as possible, and return the most common-sense IANA timezone id from user-input.

DST

Often, the proper timezone name will depend on which date you are referencing. You can reckon this pretty-easily with spacetime, like this:

const spacetime = require('spacetime')
const soft = require('timezone-soft')

let display = soft('montreal')[0]
let show = display.standard.abbrev

// are we in standard time, or daylight time?
let s = spacetime.now(display.iana)
if (display.daylight && s.isDST()) {
  show = display.daylight.abbrev
}
console.log(s.time() + ' ' + show)
// '4:20pm EDT'

work-in-progress!

See also

MIT