UNPKG

mobile-more

Version:

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

68 lines (63 loc) 2.01 kB
import dayjs, { Dayjs, isDayjs } from 'dayjs'; import advancedFormat from 'dayjs/plugin/advancedFormat'; import isoWeek from 'dayjs/plugin/isoWeek'; import relativeTime from 'dayjs/plugin/relativeTime'; import quarterOfYear from 'dayjs/plugin/quarterOfYear'; import weekOfYear from 'dayjs/plugin/weekOfYear'; import customParseFormat from 'dayjs/plugin/customParseFormat'; import weekday from 'dayjs/plugin/weekday'; import localeData from 'dayjs/plugin/localeData'; // dayjs.locale('zh-cn'); dayjs.extend(advancedFormat); dayjs.extend(isoWeek); dayjs.extend(relativeTime); dayjs.extend(quarterOfYear); dayjs.extend(weekOfYear); dayjs.extend(customParseFormat); dayjs.extend(weekday); dayjs.extend(localeData); var INVALID_DATE = 'invalid date'; /**内部使用的年-季格式 */ var InternalQuarterFormat = 'YYYY-qQ'; /** * 格式化日期为年-季字符串 * * @param value 日期值 * @returns 年-季字符串 * @example * formatQuarter('2023-03-01') // '2023-Q1' * formatQuarter('2023-04-01') // '2023-Q2' */ export function formatQuarter(value) { return dayjs(value).format(InternalQuarterFormat).toUpperCase(); } /** * 年-季字符串转换为Dayjs实例 * * @param value 年-季字符串, 例如:2023-Q1 * @returns Dayjs 实例 * @example * transformQuarter('2023-Q1').format('YYYY-MM-DD') // '2023-01-01' */ export function transformQuarter(value) { if (dayjs.isDayjs(value)) { return value; } return dayjs((value || '').replace(/q|Q/g, ''), 'YYYY-Q'); } /** * 判断日期字符串是否为无效日期字符串 * * @param value 日期字符串 * @returns 是否为无效日期字符串 * @example * isInvalidDateString('2023-03-01') // false * isInvalidDateString('2023-04-01') // false * isInvalidDateString('invalid date') // true * isInvalidDateString('Invalid Date') // true * isInvalidDateString('INVALID DATE') // true */ export function isInvalidDateString(value) { return value.toLowerCase() === INVALID_DATE; } export { dayjs, Dayjs, isDayjs };