关于moment.js的使用总结

虽然moment.js是一个三方库,但是没转化成自己的知识储备的话,在使用起来再去查也是费时费力。为了处理项目中关于时间和日期的问题,就把自己碰到的问题进行一个总结。
做管理系统,和moment.js打交道真的是家常便饭,原来一直都是按照antd
库的示例粘贴过来,但是今天遇到一个问题,才发现并没有对它有过深入的了解。
今天开始写总结,后续会在不同的需求中继续补充。
moment.js 中文网地址 http://momentjs.cn/docs/#/parsing/now
Moment.js 使用重载的 getter 和 setter 方法。 此模式类似与其在 jQuery 中的使用。
**

取值/赋值

** 不带参数调用这些方法会作为 getter,而带参数调用则会作为 setter。
1.会有一些封装好的方法用来get值
例:moment().month(Number|String); 获取或设置月份 年/月/日/时/分/秒/季等调用不同的api
2.字符串 getter
moment().get(unit) === moment()unit
例:moment().get(‘month’); // 0 至 11
3.moment的set方法
moment().set(String, Int);
moment().set(Object(String, Int));
例:moment().set({‘year’: 2013, ‘month’: 3});
问题1 :如果获取某一个给定日期的月份 ‘2022-11-28’如何获取 当前日期的月份 11 ?

   const date = '2022-11-28';
    根据方法1 const month = moment(date).get('month') + 1;
    根据方法2 const month = moment(date).month + 1;
    console.log(month);  //11

显示

moment().format(); 它接受一串令牌并将其替换为其相应的值。
moment().format(‘YYYY-MM-DD HH:mm’)
比如antd中的示例

 'date-picker': fieldsValue['date-picker'].format('YYYY-MM-DD'),`

操作

moment().add(Number, String);可以为现有的 moment 增加时间。
若要增加时间,则传入要增加的时间的键、以及要增加的数量。
例:moment().add(7, ‘days’);
moment().endOf(String);
例:moment().endOf(“year”); // 将 moment 设置为今年的 12 月 31 日 23:59:59.999
在前几天做了一个自定义DatePicker日期的操作,antd并未提供单独的DatePicker增加自定义时间范围的API,所以我做在了页脚,使用了moment的add方法

 <DatePicker
      open={pickerstatus} //antd官网提供的控制弹层是否展开的方法
      onOpenChange={status => { //antd官网提供的弹出日历和关闭日历的回调
          if (!status) {
             setPickerstatus(false)
           }}}
         onClick={()=>{setPickerstatus(true)}}
                  showToday={false}
                  renderExtraFooter={() => (
                  <div>
                  <Button onClick={() => dateChange('1month')}>1个月</Button>
                  <Button onClick={() => dateChange('3month')}>3个月</Button>
                  <Button onClick={() => dateChange('1year')}>1年</Button>
                 </div>
                )}
          disabledDate={(current)=>{
                return current && current < moment().endOf('day');
                //moment().endOf("da"); // 将 moment 设置为今年的 12 月 31 日 23:59:59.999
           }}
/>
 const dateChange = (dateTip) => {
        switch (dateTip) {
            case '1month':
                form.setFieldsValue({ limitTime: moment(moment().add(1, 'months').format("YYYY-MM-DD")) })
                break;
            case '3month':
                form.setFieldsValue({ limitTime: moment(moment().add(1, 'quarters').format("YYYY-MM-DD")) })
                break;
            case '1year':
                form.setFieldsValue({ limitTime: moment(moment().add(1, 'years').format("YYYY-MM-DD")) })
                break;
            default:
                break;
        }
        setPickerstatus(false)
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值