记录一下在工作中遇到的判断时间的问题以及时间格式化的问题。使用 moment.js。
使用 moment.isMoment() 判断是否为使用 moment 格式,如果是使用 moment 格式,然后使用moment().format() 进行格式化日期。
获取时间前几天的代码是从百度上找的,忘记收藏了,在这里记录一下
就先记录这些吧,遇到问题再记录呀!
参考 [moment的高频用法总结 - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/113350786
判断是否为时间查询条件:isMoment();
Object.keys(formValues).map(key => {
// 判断是否为时间查询条件:moment.isMoment(formValues[key])
if (typeof formValues[key] === 'object' && moment.isMoment(formValues[key])) {
// 使用 moment 格式化日期:moment(formValues[key]).format('YYYY-MM-DD')
formValues[key] = moment(formValues[key]).format('YYYY-MM-DD');
}
return formValues[key];
});
使用 moment 格式化日期:moment().format('YYYY-MM-DD');
moment('2007-05-05').format('YYYY-MM-DD');
获取明天的日期
moment(moment().subtract(-1,'days')).endOf('day').format('YYYY-MM-DD HH:mm:ss');
根据明天日期向前面推7天
moment(moment(todayDate).subtract(defaultDays,'days')).startOf('day').format('YYYY-MM-DD HH:mm:ss');
获取前一个月的日期
moment(new Date()).subtract(1,'months')
判断是否为日期格式:isValid();
moment('2007-05-05', 'YYYY-MM-DD', true).isValid()
日期类型转换为 moment 类型:2022-11-24 16:01:02 转换 moment
moment(resultData[item])
开始时间后面加 00:00:00,结束日期后面加 23:59:59
moment('2022-11-24').startOf('day'); // 添加 00:00:00
moment('2022-11-24').endOf('day'); // 添加 23:59:59
时间戳转换成时间:1666713600616 => 2022-10-26 00:00:00
moment(Func.MonthstartTime()).format('YYYY-MM-DD HH:mm:ss')
antd 使用 form.setFieldsValue 给日期表单赋值
form.setFieldsValue({ 'cycletime': moment('2022-11-24 16:01:02') });
获取指定日期的前一天/后一天
// 使用
const date = Func.formatFromStr(new Date(), 'YYYY-MM-DD'); // 获取当天日期
export const todayDate = `${date} 23:59:59` // 当前日期后面添加时分秒
export const yearDate = `${getNextDate(date,-3)} 00:00:00` // 当前日期提前三天
// 获取指定日期的前一天/后一天
export const getNextDate = (date, day = 1, format = "{y}-{m}-{d}") => {
if (date) {
// 处理传入年月日格式 例如 date = 2022年07月12日
date = date.match(/\d+/g).join("-");
// 方式二处理传入年月日格式 (需要针对是否是年月日格式判断)
// date = date.replace(/[年月日]/g, "-").slice(0, -1);
// 方式三处理传入年月日格式
// date = date.replace(/[年月]/g, "-").replace("日", "");
// console.log(date, "date"); // 2022-07-12
const nDate = new Date(date);
nDate.setDate(nDate.getDate() + day);
const formatObj = {
y: nDate.getFullYear(),
m: nDate.getMonth() + 1,
d: nDate.getDate(),
};
return format.replace(/{([ymd])+}/g, (result, key) => {
const value = formatObj[key];
return value.toString().padStart(2, "0");
});
}
console.log("date为空或格式不正确");
}