UNPKG

mobile-more

Version:

基于 antd-mobile v5 扩展移动端 UI 组件

94 lines (91 loc) 3.14 kB
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray"; import { isArray } from 'ut2'; import { dayjs, formatQuarter, isInvalidDateString } from "../../utils/dayjsUtil"; /**日期格式映射 */ export var DateFieldFormat = { date: 'YYYY-MM-DD', dateRange: 'YYYY-MM-DD', dateWeek: 'YYYY-wo', dateMonth: 'YYYY-MM', dateQuarter: 'YYYY-\\QQ', dateYear: 'YYYY', dateTime: 'YYYY-MM-DD HH:mm:ss', dateTimeRange: 'YYYY-MM-DD HH:mm:ss', time: 'HH:mm:ss', timeRange: 'HH:mm:ss' }; var DateFieldValueType = Object.keys(DateFieldFormat).concat(['fromNow']); /** * 判断是否为日期字段值类型 * @param fieldValueType 字段类型字符串 * @returns */ export function isDateFieldType(fieldValueType) { return !!fieldValueType && DateFieldValueType.includes(fieldValueType); } /** * 格式化日期字符串 * * @param value 日期值 * @param format 日期格式 * @returns 格式化后的日期字符串 * @example * _formatDate('2023-03-01', 'YYYY-MM-DD') // '2023-03-01' * _formatDate('invalid date', 'YYYY-MM-DD') // 'invalid date' * _formatDate('23:00:00', 'HH:mm:ss') // '23:00:00' * _formatDate('23:00', 'HH:mm:ss') // 'Invalid Date' * _formatDate(dayjs('2023-03-01 23:00:00'), 'HH:mm:ss') // '23:00:00' */ function _formatDate(value, format) { var str = dayjs(value).format(format); if (isInvalidDateString(str)) { str = dayjs(value, format).format(format); } return str; } /** * 获取格式化后的日期字符串 * @param value 日期值 * @param type 日期字段类型 * @param format 日期格式 * @returns 格式化后的日期字符串 * @example * transformDateFieldValue('2023-03-01', 'date') // '2023-03-01' * transformDateFieldValue('abc', 'date') // 'Invalid Date' * transformDateFieldValue('23:00:00', 'time') // '23:00:00' * transformDateFieldValue('23:00', 'time') // 'Invalid Date' * transformDateFieldValue(dayjs('2023-03-01 23:00:00'), 'time') // '23:00:00' * transformDateFieldValue(['2023-03-01', '2025-03-01'], 'dateRange') // '2023-03-01 ~ 2025-03-01' * transformDateFieldValue('2023-03-01', 'fromNow') // '10个月前' */ export function transformDateFieldValue(value) { var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'date'; var format = arguments.length > 2 ? arguments[2] : undefined; if (!value) { return ''; } if (isArray(value)) { // @ts-ignore if (value.length === 0) { return ''; } if (type === 'dateRange' || type === 'dateTimeRange' || type === 'timeRange') { var _fmt = format || DateFieldFormat[type]; var _value = _slicedToArray(value, 2), startDate = _value[0], endDate = _value[1]; var startText = startDate ? _formatDate(startDate, _fmt) : '-'; var endText = endDate ? _formatDate(endDate, _fmt) : '-'; return "".concat(startText, " ~ ").concat(endText); } return ''; } if (type === 'fromNow') { return dayjs(value).fromNow(); } if (type === 'dateQuarter') { return formatQuarter(value); } var fmt = format || DateFieldFormat[type]; return _formatDate(value, fmt); }