UNPKG

@progress/kendo-date-math

Version:

Kendo UI typescript package exporting functions for Date manipulations

44 lines (43 loc) 1.68 kB
import { zoneAndRule } from './zone-and-rule'; // tslint:disable:max-line-length /** * A function which returns the abbreviated name of the timezone. You can specify an optional date for returning the timezone name at a different point in time. The corresponding UTC date is used for locating the relevant rule. Timezone names change both historically and when they reflect the Daylight Savings Time rules. * * @param timezone - The timezone name. For example, `America/Chicago`, `Europe/Sofia`. * @param date - A date for which to locate the zone rule. By default, the current time is used. * * @return - The abbreviated name of the timezone at the specified date or, if not set, returns now. * * @example * ```ts-no-run * import { abbrTimezone } from '@progress/kendo-date-math'; * import '@progress/kendo-date-math/tz/Europe/Sofia'; * * const dstDate = new Date('2018-04-01T00:00:00Z'); * console.log(abbrTimezone('Europe/Sofia', dstDate)); // EEST * * const date = new Date('2018-01-01T00:00:00Z'); * console.log(abbrTimezone('Europe/Sofia', date); // EET * ``` */ // tslint:enable:max-line-length export const abbrTimezone = (timezone, date = new Date()) => { if (timezone === "Etc/UTC") { return 'UTC'; } if (timezone === "Etc/GMT") { return 'GMT'; } if (timezone === '') { return ''; } const { zone, rule } = zoneAndRule(timezone, date); const base = zone[2]; if (base.indexOf("/") >= 0) { return base.split("/")[rule && +rule[6] ? 1 : 0]; } else if (base.indexOf("%s") >= 0) { return base.replace("%s", (!rule || rule[7] === "-") ? '' : rule[7]); } return base; };