devextreme
Version:
HTML5 JavaScript Component Suite for Responsive Web Development
174 lines (172 loc) • 6.41 kB
JavaScript
/**
* DevExtreme (cjs/__internal/core/localization/date.js)
* Version: 25.2.3
* Build date: Fri Dec 12 2025
*
* Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED
* Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
*/
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _first_day_of_week_data = _interopRequireDefault(require("../../core/localization/cldr-data/first_day_of_week_data"));
var _core = _interopRequireDefault(require("../../core/localization/core"));
var _default_date_names = _interopRequireDefault(require("../../core/localization/default_date_names"));
var _date = _interopRequireDefault(require("../../core/localization/intl/date"));
var _date2 = require("../../core/localization/ldml/date.format");
var _date3 = require("../../core/localization/ldml/date.formatter");
var _date4 = require("../../core/localization/ldml/date.parser");
var _number = _interopRequireDefault(require("../../core/localization/number"));
var _m_errors = _interopRequireDefault(require("../../core/m_errors"));
var _m_dependency_injector = require("../../core/utils/m_dependency_injector");
var _m_iterator = require("../../core/utils/m_iterator");
var _m_type = require("../../core/utils/m_type");
function _interopRequireDefault(e) {
return e && e.__esModule ? e : {
default: e
}
}
const DEFAULT_DAY_OF_WEEK_INDEX = 0;
const hasIntl = "undefined" !== typeof Intl;
const 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",
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"
};
const 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"]
};
const dateLocalization = (0, _m_dependency_injector.injector)({
engine: () => "base",
_getPatternByFormat: format => FORMATS_TO_PATTERN_MAP[format.toLowerCase()],
_expandPattern(pattern) {
return this._getPatternByFormat(pattern) || pattern
},
formatUsesMonthName(format) {
return -1 !== this._expandPattern(format).indexOf("MMMM")
},
formatUsesDayName(format) {
return -1 !== this._expandPattern(format).indexOf("EEEE")
},
getFormatParts(format) {
const pattern = this._getPatternByFormat(format) || format;
const result = [];
(0, _m_iterator.each)(pattern.split(/\W+/), ((_, formatPart) => {
(0, _m_iterator.each)(possiblePartPatterns, ((partName, possiblePatterns) => {
if (possiblePatterns.includes(formatPart)) {
result.push(partName)
}
}))
}));
return result
},
getMonthNames: format => _default_date_names.default.getMonthNames(format),
getDayNames: format => _default_date_names.default.getDayNames(format),
getQuarterNames: format => _default_date_names.default.getQuarterNames(format),
getPeriodNames: format => _default_date_names.default.getPeriodNames(format),
getTimeSeparator: () => ":",
is24HourFormat(format) {
const amTime = new Date(2017, 0, 20, 11, 0, 0, 0);
const pmTime = new Date(2017, 0, 20, 23, 0, 0, 0);
const amTimeFormatted = this.format(amTime, format);
const pmTimeFormatted = this.format(pmTime, format);
for (let i = 0; i < amTimeFormatted.length; i += 1) {
if (amTimeFormatted[i] !== pmTimeFormatted[i]) {
return !isNaN(parseInt(amTimeFormatted[i], 10))
}
}
return
},
format(date, format) {
if (!date) {
return
}
if (!format) {
return date
}
let formatter;
if ("function" === typeof format) {
formatter = format
} else if (format.formatter) {
formatter = format.formatter
} else {
format = format.type ?? format;
if ((0, _m_type.isString)(format)) {
format = FORMATS_TO_PATTERN_MAP[format.toLowerCase()] || format;
return _number.default.convertDigits((0, _date3.getFormatter)(format, this)(date))
}
}
if (!formatter) {
return
}
return formatter(date)
},
parse(text, format) {
const that = this;
let ldmlFormat;
let formatter;
if (!text) {
return
}
if (!format) {
return this.parse(text, "shortdate")
}
if ("object" === typeof format && format.parser) {
return format.parser(text)
}
if ("string" === typeof format && !FORMATS_TO_PATTERN_MAP[format.toLowerCase()]) {
ldmlFormat = format
} else {
formatter = value => {
const text = that.format(value, format);
return _number.default.convertDigits(text, true)
};
try {
ldmlFormat = (0, _date2.getFormat)(formatter)
} catch (e) {}
}
if (ldmlFormat) {
text = _number.default.convertDigits(text, true);
return (0, _date4.getParser)(ldmlFormat, this)(text)
}
_m_errors.default.log("W0012");
const result = new Date(text);
if (!result || isNaN(result.getTime())) {
return
}
return result
},
firstDayOfWeekIndex() {
const index = _core.default.getValueByClosestLocale((locale => _first_day_of_week_data.default[locale]));
return index ?? 0
}
});
if (hasIntl) {
dateLocalization.inject(_date.default)
}
var _default = exports.default = dateLocalization;