使用 moment 记录格式化日期,判断时间格式

1,155 阅读2分钟

记录一下在工作中遇到的判断时间的问题以及时间格式化的问题。使用 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为空或格式不正确");
}