mobile-more
Version:
基于 antd-mobile v5 扩展移动端 UI 组件
68 lines (63 loc) • 2.01 kB
JavaScript
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 };