JS参数归一化之对日期时间的格式化
2023-12-18 21:21:55
/** 辅助函数:参数类型不确定时,找到它们的共同点作处理 */
function _formatNormalize(formatter){
if(typeof formatter === 'function'){
return formatter;
}
if(typeof formatter !== 'string'){
throw new TypeError('formatter must be string or function');
}
if(formatter === 'data'){
formatter = 'yyyy-MM-dd';
}else if(formatter === 'datatime'){
formatter = 'yyyy-MM-dd HH:mm:ss';
}
return (dateInfo) => {
const { yyyy, MM, dd, HH, mm, ss, ms } = dateInfo;
return formatter
.replace('yyyy', yyyy)
.replace('MM', MM)
.replace('dd', dd)
.replace('HH', HH)
.replace('mm', mm)
.replace('ss', ss)
.replace('ms', ms)
}
}
/** 格式化日期,第三个参数: 是否需要补全位数 */
function formate(date, formatter, isPad = false){
formatter = _formatNormalize(formatter);
const dateInfo = {
year: date.getFullYear(),
month: date.getMonth() + 1,
date: date.getDate(),
hours: date.getHours(),
minutes: date.getMinutes(),
seconds: date.getSeconds(),
milliseconds: date.getMilliseconds()
}
dateInfo.yyyy = isPad ? dateInfo.year.toString().padStart(4, '0') : dateInfo.year;
dateInfo.MM = isPad ? dateInfo.month.toString().padStart(2, '0') : dateInfo.month;
dateInfo.dd = isPad ? dateInfo.date.toString().padStart(2, '0') : dateInfo.date;
dateInfo.HH = isPad ? dateInfo.hours.toString().padStart(2, '0') : dateInfo.hours;
dateInfo.mm = isPad ? dateInfo.minutes.toString().padStart(2, '0') : dateInfo.minutes;
dateInfo.ss = isPad ? dateInfo.seconds.toString().padStart(2, '0') : dateInfo.seconds;
dateInfo.ms = isPad ? dateInfo.milliseconds.toString().padStart(3, '0') : dateInfo.milliseconds;
return formatter(dateInfo);
}
// 1999-4-2
let a = formate(new Date(), 'data');
// 1999-4-2 12:1:34
let b = formate(new Date(), 'datatime');
// 1999-04-02
let c = formate(new Date(), 'data', true);
//1999-04-02 12:1:34
let d = formate(new Date(), 'datatime', true);
// 1999年04月06日 12:01:34
let e = formate(new Date(),'yyyy年MM月dd日 HH:mm:ss', true);
//1999年4月6日 12:1:34
const f = formate(new Date('2022/1/1'), (dateInfo) => {
const { year } = dateInfo;
const thisYear = new Date().getFullYear();
if( year < thisYear) {
return `${thisYear - year}年前`;
}else if(year > thisYear) {
return `${year - thisYear}年后`
}else{
return `今年`
}
});
console.log(a, b, c, d, e, f)
文章来源:https://blog.csdn.net/qq_39691676/article/details/135069961
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!