UNPKG

dt-format

Version:
116 lines (115 loc) 5.7 kB
"use strict"; exports.__esModule = true; var date_time_pattern_1 = require("./date.time.pattern"); var locale_1 = require("./locale"); var DateTimeType; (function (DateTimeType) { DateTimeType["SHORT"] = "short"; DateTimeType["LONG"] = "long"; })(DateTimeType || (DateTimeType = {})); var DayTimeMarker; (function (DayTimeMarker) { DayTimeMarker["AM"] = "AM"; DayTimeMarker["PM"] = "PM"; })(DayTimeMarker || (DayTimeMarker = {})); var POSSIBLE_PATTERNS = [ date_time_pattern_1.DateTimePattern.FULL_DATE, date_time_pattern_1.DateTimePattern.SHORT_DATE, date_time_pattern_1.DateTimePattern.FULL_YEAR, date_time_pattern_1.DateTimePattern.SHORT_YEAR, date_time_pattern_1.DateTimePattern.FULL_MINUTE, date_time_pattern_1.DateTimePattern.SHORT_MINUTE, date_time_pattern_1.DateTimePattern.FULL_24_HOUR, date_time_pattern_1.DateTimePattern.SHORT_24_HOUR, date_time_pattern_1.DateTimePattern.FULL_HOUR, date_time_pattern_1.DateTimePattern.SHORT_HOUR, date_time_pattern_1.DateTimePattern.FULL_SECOND, date_time_pattern_1.DateTimePattern.SHORT_SECOND, date_time_pattern_1.DateTimePattern.FULL_MILLISECOND, date_time_pattern_1.DateTimePattern.MEDIUM_MILLISECOND, date_time_pattern_1.DateTimePattern.SHORT_MILLISECOND, date_time_pattern_1.DateTimePattern.AM_PM_MARKER, date_time_pattern_1.DateTimePattern.FULL_MONTH, date_time_pattern_1.DateTimePattern.MEDIUM_MONTH, date_time_pattern_1.DateTimePattern.SHORT_MONTH, date_time_pattern_1.DateTimePattern.FULL_WEEK, date_time_pattern_1.DateTimePattern.MEDIUM_WEEK, date_time_pattern_1.DateTimePattern.SHORT_WEEK, ]; var getDayTimeMarker = function (locale, type) { return locale_1.getLocalizedTimeMarker(locale)[type]; }; var getWeek = function (week, key, locale) { return locale_1.getLocalizedWeek(locale)["" + week][key]; }; var getMonth = function (month, key, locale) { return locale_1.getLocalizedMonth(locale)["" + month][key]; }; var suffixWithZero = function (value, comparator) { if (comparator === void 0) { comparator = 9; } return value <= comparator ? "0" + value : "" + value; }; var calculateIn12HourFormat = function (value) { return value > 12 ? value - 12 : value; }; var getDateValue = function (date, pattern, locale) { switch (pattern) { case date_time_pattern_1.DateTimePattern.SHORT_DATE: return "" + date.getDate(); case date_time_pattern_1.DateTimePattern.FULL_DATE: return suffixWithZero(date.getDate()); case date_time_pattern_1.DateTimePattern.SHORT_YEAR: return ("" + date.getFullYear()).substring(2); case date_time_pattern_1.DateTimePattern.FULL_YEAR: return "" + date.getFullYear(); case date_time_pattern_1.DateTimePattern.SHORT_MONTH: return suffixWithZero(date.getMonth() + 1); case date_time_pattern_1.DateTimePattern.MEDIUM_MONTH: return getMonth(date.getMonth(), DateTimeType.SHORT, locale); case date_time_pattern_1.DateTimePattern.FULL_MONTH: return getMonth(date.getMonth(), DateTimeType.LONG, locale); case date_time_pattern_1.DateTimePattern.SHORT_WEEK: return suffixWithZero(date.getDay()); case date_time_pattern_1.DateTimePattern.MEDIUM_WEEK: return getWeek(date.getDay(), DateTimeType.SHORT, locale); case date_time_pattern_1.DateTimePattern.FULL_WEEK: return getWeek(date.getDay(), DateTimeType.LONG, locale); case date_time_pattern_1.DateTimePattern.FULL_MINUTE: return suffixWithZero(date.getMinutes()); case date_time_pattern_1.DateTimePattern.SHORT_MINUTE: return date.getMinutes(); case date_time_pattern_1.DateTimePattern.SHORT_24_HOUR: return date.getHours(); case date_time_pattern_1.DateTimePattern.FULL_24_HOUR: return suffixWithZero(date.getHours()); case date_time_pattern_1.DateTimePattern.SHORT_HOUR: return calculateIn12HourFormat(date.getHours()); case date_time_pattern_1.DateTimePattern.FULL_HOUR: return suffixWithZero(calculateIn12HourFormat(date.getHours())); case date_time_pattern_1.DateTimePattern.SHORT_SECOND: return date.getSeconds(); case date_time_pattern_1.DateTimePattern.FULL_SECOND: return suffixWithZero(date.getSeconds()); case date_time_pattern_1.DateTimePattern.SHORT_MILLISECOND: return date.getMilliseconds(); case date_time_pattern_1.DateTimePattern.MEDIUM_MILLISECOND: return suffixWithZero(date.getMilliseconds()); case date_time_pattern_1.DateTimePattern.FULL_MILLISECOND: return suffixWithZero(date.getMilliseconds(), 99); case date_time_pattern_1.DateTimePattern.AM_PM_MARKER: return date.getHours() >= 12 ? getDayTimeMarker(locale, DayTimeMarker.PM) : getDayTimeMarker(locale, DayTimeMarker.AM); default: return ''; } }; var DateTimeFormat = (function () { function DateTimeFormat() { } DateTimeFormat.format = function (date, pattern, locale) { if (locale === void 0) { locale = locale_1.LocaleType.en_GB; } var value = pattern; POSSIBLE_PATTERNS.forEach(function (possiblePattern) { while (value.indexOf(possiblePattern) !== -1) { var dateValue = getDateValue(date, possiblePattern, locale); value = value.replace(possiblePattern, dateValue); } }); return value; }; return DateTimeFormat; }()); exports.DateTimeFormat = DateTimeFormat;