@kcuf/intl-formatter
Version:
Basic intl formatters.
39 lines (38 loc) • 1.31 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = formatDateFallback;
var _forEach2 = _interopRequireDefault(require("lodash/forEach"));
/**
* 当 Intl.DateTimeFormat 失败时的兜底方法
*/
function formatDateFallback(d) {
var format = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'YYYY-MM-DD HH:mm:ss';
/**
* 借鉴 moment
* - `年Y月M日D季Q周W` 等大头都是大写的
* - `时hH分m秒s` 都是小写的(时的话用大写的 H 表示 24 小时制)
* - 毫秒是 S
*/
var o = {
'Q+': Math.floor((d.getMonth() + 3) / 3),
'M+': d.getMonth() + 1,
'D+': d.getDate(),
'H+': d.getHours(),
'm+': d.getMinutes(),
's+': d.getSeconds(),
S: d.getMilliseconds()
};
var pattern = format;
if (/(Y+)/.test(pattern)) {
pattern = pattern.replace(RegExp.$1, "".concat(d.getFullYear()).substring(4 - RegExp.$1.length));
}
(0, _forEach2.default)(o, function (v, k) {
if (new RegExp("(".concat(k, ")")).test(pattern)) {
pattern = pattern.replace(RegExp.$1, RegExp.$1.length === 1 ? "".concat(v) : "00".concat(v).substring("".concat(v).length));
}
});
return pattern;
}