美文网首页
moment获取自然时间和近期时间

moment获取自然时间和近期时间

作者: 坏丶毛病 | 来源:发表于2020-12-29 09:59 被阅读0次

    moment:JavaScript 日期处理类库,主要用于处理日期、时间,可以进行所需要的日期格式化,也可以按所需获取相应的时间。

    此次我们来简单介绍下在vue项目使用moment,以及一些常规操作。

    安装依赖:

    npm install moment --save
    

    引入(可以直接main.js引入,也可以考虑新建个插件的文件夹,然后写到一个moment.js文件中):

    import Vue from 'vue';
    import moment from 'moment';
    import 'moment/locale/zh-cn'; // 获取中国标准时间,避免出现utc时间
    

    如果全局基本格式化都是完整日期格式,可以考虑写个vue过滤器:
    根据传入的时间默认格式化参数为YYYY-MM-DD HH:mm:ss的格式,如果日期参数本身有问题,作出校验按 ' - - ' 处理

    Vue.filter('dateFormat', function filter(dateStr, pattern = 'YYYY-MM-DD HH:mm:ss') {
        return dateStr ? moment(dateStr).format(pattern) : '- -';
    });
    

    常用的格式化操作可以参考官网,我就不cv官网了(手动滑稽)
    附上官网地址:moment.js官网

    这里说下比较有争议的点,举个例子,我们有个日期选项卡(分别是日、周、月、季、半年、年),起初做的是按近期时间计算的,如近一天、近一周,但是后期又改为自然日、自然周。
    所以如何获取自然时间和近期时间就是我们需要考虑的问题。
    格式化操作如下:

    • 自然时间(分为起始时间和结束时间构成的时间段,结束时间是当前的时间):

      • 自然日:
      moment().startOf('day').format('YYYY-MM-DD HH:mm:ss') // 起始时间(当前的00:00:00点)
      moment().format('YYYY-MM-DD HH:mm:ss') // 结束时间(当前系统的时间)
      
      • 自然周:
      moment().startOf('week').format('YYYY-MM-DD HH:mm:ss') // 起始时间(当前周周一的00:00:00点)
      moment().format('YYYY-MM-DD HH:mm:ss') // 结束时间(当前系统的时间)
      
      • 自然月:
      moment().startOf('months').format('YYYY-MM-DD HH:mm:ss') // 起始时间(当前月1号的00:00:00点)
      moment().format('YYYY-MM-DD HH:mm:ss') // 结束时间(当前系统的时间)
      
      • 自然季:
      moment().startOf('quarters').format('YYYY-MM-DD HH:mm:ss') // 起始时间(当前季度1号的00:00:00点)
      moment().format('YYYY-MM-DD HH:mm:ss') // 结束时间(当前系统的时间)
      
      • 自然半年(比较特殊,需要区分上半年或者下半年):
      moment().get('month') + 1 <= 6
                      ? moment().format(`${moment().get('year')}-01-01 00:00:00`)
                      : moment().format(`${moment().get('year')}-07-01 00:00:00`)
      // 获取当前月+1然后和6进行比较区分上下半年,上半年就计算1月1号的00点,下半年就计算7月1号的00点
      moment().format('YYYY-MM-DD HH:mm:ss') // 结束时间(当前系统的时间)
      
      • 自然年:
      moment().startOf('years').format('YYYY-MM-DD HH:mm:ss') // 起始时间(当前年1号的00:00:00点)
      moment().format('YYYY-MM-DD HH:mm:ss') // 结束时间(当前系统的时间)
      

      其实可以看到,基本都是通过startOf的不同参数来获取的,唯一需要注意的可能就是半年的概念了。

    • 近期时间(分为起始时间和结束时间构成的时间段,结束时间是当前的时间):

      • 日(近一天):
      moment().day(moment().day() - 1).format('YYYY-MM-DD HH:mm:ss') // 当前时间往前推一天的时间
      moment().format('YYYY-MM-DD HH:mm:ss') // 结束时间(当前系统的时间)
      
      • 周(近一周):
      moment().day(moment().day() - 6).format('YYYY-MM-DD HH:mm:ss') // 当前时间往前推一周的时间
      moment().format('YYYY-MM-DD HH:mm:ss') // 结束时间(当前系统的时间)
      
      • 月(近一个月):
      moment().subtract(1, 'months').format('YYYY-MM-DD HH:mm:ss') // 当前时间往前推一个月的时间
      moment().format('YYYY-MM-DD HH:mm:ss') // 结束时间(当前系统的时间)
      
      • 季(近三个月):
      moment().subtract(1, 'quarters').format('YYYY-MM-DD HH:mm:ss') // 当前时间往前推三个月的时间
      moment().format('YYYY-MM-DD HH:mm:ss') // 结束时间(当前系统的时间)
      
      • 半年(近六个月):
      moment().subtract(6, 'months').format('YYYY-MM-DD HH:mm:ss') // 当前时间往前推六个月的时间
      moment().format('YYYY-MM-DD HH:mm:ss') // 结束时间(当前系统的时间)
      
      • 年(近一年):
      moment().subtract(1, 'years').format('YYYY-MM-DD HH:mm:ss') // 当前时间往前推一年的时间
      moment().format('YYYY-MM-DD HH:mm:ss') // 结束时间(当前系统的时间)
      

      以上就是获取自然时间和近期时间的方法。
      期待能够对你有所帮助~~~
      如有问题,请指出,接受批评。

    相关文章

      网友评论

          本文标题:moment获取自然时间和近期时间

          本文链接:https://www.haomeiwen.com/subject/kgcfoktx.html