| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- /**
- * DevExtreme (localization/date.js)
- * Version: 19.1.16
- * Build date: Tue Oct 18 2022
- *
- * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED
- * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
- */
- "use strict";
- var dependencyInjector = require("../core/utils/dependency_injector");
- var isString = require("../core/utils/type").isString;
- var iteratorUtils = require("../core/utils/iterator");
- var inArray = require("../core/utils/array").inArray;
- var getLDMLDateFormatter = require("./ldml/date.formatter").getFormatter;
- var getLDMLDateFormat = require("./ldml/date.format").getFormat;
- var getLDMLDateParser = require("./ldml/date.parser").getParser;
- var defaultDateNames = require("./default_date_names");
- var numberLocalization = require("./number");
- var errors = require("../core/errors");
- require("./core");
- var FORMATS_TO_PATTERN_MAP = {
- shortdate: "M/d/y",
- shorttime: "h:mm a",
- longdate: "EEEE, MMMM d, y",
- longtime: "h:mm:ss a",
- monthandday: "MMMM d",
- monthandyear: "MMMM y",
- quarterandyear: "QQQ y",
- day: "d",
- year: "y",
- shortdateshorttime: "M/d/y, h:mm a",
- mediumdatemediumtime: "MMMM d, h:mm a",
- longdatelongtime: "EEEE, MMMM d, y, h:mm:ss a",
- month: "LLLL",
- shortyear: "yy",
- dayofweek: "EEEE",
- quarter: "QQQ",
- hour: "HH",
- minute: "mm",
- second: "ss",
- millisecond: "SSS",
- "datetime-local": "yyyy-MM-ddTHH':'mm':'ss"
- };
- var possiblePartPatterns = {
- year: ["y", "yy", "yyyy"],
- day: ["d", "dd"],
- month: ["M", "MM", "MMM", "MMMM"],
- hours: ["H", "HH", "h", "hh", "ah"],
- minutes: ["m", "mm"],
- seconds: ["s", "ss"],
- milliseconds: ["S", "SS", "SSS"]
- };
- var dateLocalization = dependencyInjector({
- _getPatternByFormat: function(format) {
- return FORMATS_TO_PATTERN_MAP[format.toLowerCase()]
- },
- _expandPattern: function(pattern) {
- return this._getPatternByFormat(pattern) || pattern
- },
- formatUsesMonthName: function(format) {
- return this._expandPattern(format).indexOf("MMMM") !== -1
- },
- formatUsesDayName: function(format) {
- return this._expandPattern(format).indexOf("EEEE") !== -1
- },
- getFormatParts: function(format) {
- var pattern = this._getPatternByFormat(format) || format;
- var result = [];
- iteratorUtils.each(pattern.split(/\W+/), function(_, formatPart) {
- iteratorUtils.each(possiblePartPatterns, function(partName, possiblePatterns) {
- if (inArray(formatPart, possiblePatterns) > -1) {
- result.push(partName)
- }
- })
- });
- return result
- },
- getMonthNames: function(format) {
- return defaultDateNames.getMonthNames(format)
- },
- getDayNames: function(format) {
- return defaultDateNames.getDayNames(format)
- },
- getQuarterNames: function(format) {
- return defaultDateNames.getQuarterNames(format)
- },
- getPeriodNames: function(format) {
- return defaultDateNames.getPeriodNames(format)
- },
- getTimeSeparator: function() {
- return ":"
- },
- is24HourFormat: function(format) {
- var amTime = new Date(2017, 0, 20, 11, 0, 0, 0);
- var pmTime = new Date(2017, 0, 20, 23, 0, 0, 0);
- var amTimeFormatted = this.format(amTime, format);
- var pmTimeFormatted = this.format(pmTime, format);
- for (var i = 0; i < amTimeFormatted.length; i++) {
- if (amTimeFormatted[i] !== pmTimeFormatted[i]) {
- return !isNaN(parseInt(amTimeFormatted[i]))
- }
- }
- },
- format: function(date, _format) {
- if (!date) {
- return
- }
- if (!_format) {
- return date
- }
- var formatter;
- if ("function" === typeof _format) {
- formatter = _format
- } else {
- if (_format.formatter) {
- formatter = _format.formatter
- } else {
- _format = _format.type || _format;
- if (isString(_format)) {
- _format = FORMATS_TO_PATTERN_MAP[_format.toLowerCase()] || _format;
- return numberLocalization.convertDigits(getLDMLDateFormatter(_format, this)(date))
- }
- }
- }
- if (!formatter) {
- return
- }
- return formatter(date)
- },
- parse: function(text, format) {
- var that = this;
- var ldmlFormat;
- if (!text) {
- return
- }
- if (!format) {
- return this.parse(text, "shortdate")
- }
- if (format.parser) {
- return format.parser(text)
- }
- if ("string" === typeof format && !FORMATS_TO_PATTERN_MAP[format.toLowerCase()]) {
- ldmlFormat = format
- } else {
- var formatter = function(value) {
- var text = that.format(value, format);
- return numberLocalization.convertDigits(text, true)
- };
- try {
- ldmlFormat = getLDMLDateFormat(formatter)
- } catch (e) {}
- }
- if (ldmlFormat) {
- text = numberLocalization.convertDigits(text, true);
- return getLDMLDateParser(ldmlFormat, this)(text)
- }
- errors.log("W0012");
- var result = new Date(text);
- if (!result || isNaN(result.getTime())) {
- return
- }
- return result
- },
- firstDayOfWeekIndex: function() {
- return 0
- }
- });
- module.exports = dateLocalization;
|