zoukankan      html  css  js  c++  java
  • Moment.js让日期处理变得更简单

    在大多数的vue项目中,都可以看到引用了Moment.js这个JavaScript 日期处理类库,进入官网看了一下,确实十分实用,基本日常用到的和时间相关的逻辑处理,都能通过moment.js轻松实现,下面就平时用过的一些api做个总结。

    当前日期格式化

    let curTime = moment().format('YYYY-MM-DD HH:mm:ss')
    console.log('当前日期时间curTime:' + curTime)//curTime:2019-01-30 10:21:11
    

    指定日期格式化

    let a = '20190130'
    let aFormat = moment(a).format('YYYY-MM-DD')
    console.log('aFormat:' + aFormat)//aFormat:2019-01-30
    

    日期操作

    //距离当前时间:七天
    let sevenDaysAgo = moment().subtract(7, 'days').format('YYYY-MM-DD')
    console.log('sevenDaysAgo:' + sevenDaysAgo)//sevenDaysAgo:2019-01-23
    
    //距离当前时间:一周			
    let oneWeekAgo = moment().subtract(1, 'weeks').format('YYYY-MM-DD')
    console.log('oneWeekAgo:' + oneWeekAgo)//oneWeekAgo:2019-01-23
    
    //距离当前时间:三个月					
    let threeMonthsAgo = moment().subtract(3, "months").format("YYYY-MM-DD")
    console.log('threeMonthsAgo:' + threeMonthsAgo)//threeMonthsAgo:2018-10-30
    
    //距离当前时间:一年					
    let oneYearAgo = moment().subtract(1, "years").format("YYYY-MM-DD")
    console.log('oneYearAgo:' + oneYearAgo)//oneYearAgo:2018-01-30
    

    减法,对应于:subtract()方法
    加法,对应于:add()方法

    根据身份证号码获得周岁年龄

    let idCardNumber = '234567199302019929'
    let birthday = idCardNumber.slice(6, 14)
    console.log('出生日期:' + birthday)//出生日期:19930201
    console.log('当前日期:' + moment().format("YYYY-MM-DD"))//当前日期:2019-01-30
    let age = moment().diff(moment(birthday), 'years')
    console.log('周岁年龄:' + age)//周岁年龄:25
    

    (补充于2019-02-20)日期与时间戳之间的转换
    当涉及到日期的时间轴拖拽,那么通常需要把日期转换成时间戳来进行操作

    //将日期转换成时间戳   
    //moment().valueOf()  
    //new Date().getTime()  
    //Date.parse(new Date())
    
    let timestamp1 = moment().unix();
    let timestamp2 = moment().valueOf();
    let timestamp3 = new Date().getTime();
    let timestamp4 = Date.parse(new Date());
    
    //将时间戳转换成日期   moment(时间戳).format()
    
    let timestampToDate1 = moment(timestamp1).format("YYYY-MM-DD");
    let timestampToDate2 = moment(timestamp2).format("YYYY-MM-DD");
    let timestampToDate3 = moment(timestamp3).format("YYYY-MM-DD");
    let timestampToDate4 = moment(timestamp4).format("YYYY-MM-DD");
    
    console.log('timestamp1:' + timestamp1);//timestamp1:1550657032
    console.log('timestamp2:' + timestamp2);//timestamp2:1550657032279
    console.log('timestamp3:' + timestamp3);//timestamp3:1550657032279
    console.log('timestamp4:' + timestamp4);//timestamp4:1550657032000
    
    console.log('timestampToDate1:' + timestampToDate1);//timestampToDate1:1970-01-19
    console.log('timestampToDate2:' + timestampToDate2);//timestampToDate2:2019-02-20
    console.log('timestampToDate3:' + timestampToDate3);//timestampToDate3:2019-02-20
    console.log('timestampToDate4:' + timestampToDate4);//timestampToDate4:2019-02-20
    

    由上面的案例测试可知:

    1. moment().unix() 获得的时间戳单位为秒
    2. moment().valueOf() 等同于 new Date().getTime() 获得的时间戳单位为毫秒
    3. Date.parse() 得到的值是以毫秒为单位的,且后三位默认为0,即不具体到毫秒
    4. 如果想将时间戳转化为日期,moment的参数必须是毫秒为单位的,它就是识别为毫秒的,如果不是的话,会使结果出错

    参考文档:(Moment.js 中文文档)http://momentjs.cn/docs/
    参考原文:https://blog.csdn.net/badmoonc/article/details/82142100

  • 相关阅读:
    DataFrame遍历所有元素
    linux 安装redis 和系统学习redis
    接口
    安装idea教程
    Hello World!
    通过特征交互检测生成文本分类的层次解释《Generating Hierarchical Explanations on Text Classification via Feature Interaction Detection》(LIME算法、神经网络预测的分层解释CD和ACD、Shapley Value夏普利值、Leave-One-Out留一法、HEDGE)
    数字图像处理 乱记
    高傲的审稿人
    两项技能
    人其实会变的
  • 原文地址:https://www.cnblogs.com/chaoyueqi/p/10337278.html
Copyright © 2011-2022 走看看