Dev推荐给我一个厉害的JavaScript日期处理类库

我刚刚花了几天时间将Adventure系统的API测试全部重构了一遍,看着386个测试在CI上跑起来,内心未免些许激动。

然而,作为一个半路出家的JavaScript选手,在编写Scripts时,常常受限于薄弱的编码能力,不得不放弃一些厉害的Case、编写的代码也不够简洁。比如,我常常需要处理诸如“2018-06-08”、“2018-06-08”、“20180608”、“20180608 00:00:00”、“2018/06/08”, 以及TimeStamp等各种花样的时间问题,真叫人抓耳挠腮。举个例子,为了以“20180608”的格式展示当天日期,我分别取到year、Month、Day,然后拼接成想要的格式。虽实现了功能,但方法却着实笨了些。

let now = new Date();
let today = now.getFullYear() + ((now.getMonth()+1) < 10 ? '0'
+(now.getMonth() +1) : now.getMonth() +1) + (now.getDate() < 10 ? '0'
+ now.getDate() : now.getDate());

我想,如果我曾经是以这样的编码水平来应聘骚窝的Dev,一定无法通关????????????。

好在,好学的七姑娘及时去找Dev小齐同学,企图寻求一些优秀的解决方案。这不,小齐同学帮我引入一个JavaScript日期处理类库【Moment.js】, 一行代码就解决了问题。

let today = moment().format('YYYY-MM-DD');

细细研究之后,七姑娘认为这个Moment.js却是值得墙裂推荐给反复“玩弄”日期的同学(专业写js的同学请不要笑话我的浅薄????)。


Moment.js是一个JavaScript日期处理类库,它能够在浏览器、Node.js、Require.js等多种js框架中工作。我是将其引入“Supertest+Mocha+Chai+Grunt”的API测试框架中。这里只列举一些常用的方法,更多精彩,还请移步【Moment.js官网】。

1. Install
npm install moment --save   # npm

2. 引入Moment.js库
const moment = require('moment');

3. 获取当前时间
moment();
相当于
moment(new Date());

打印结果为:moment(“2018-06-08T16:46:41.488”)

4. 日期格式化

moment().format();
moment().format(String); //例如:moment().format("YYYY-MM-DD");

这里的format支持很多格式, 比如:“YYYY-MM-DD”、“YYYY-MM-DD HH:MM:SS”等多种你需要的格式。

处理之外,Moment还可以计算相对时间,比如:

moment("20111031", "YYYYMMDD").fromNow(); // 7 年前
moment("20120620", "YYYYMMDD").fromNow(); // 6 年前
moment().startOf('day').fromNow();        // 17 小时前
moment().endOf('day').fromNow();          // 7 小时内
moment().startOf('hour').fromNow();


5. 取值

可以获取当前的年月日时分秒等。

moment().year(); //获取当前年
moment().month() //获取当前月
moment().weekday(); //获取当前的星期(区域标准)
moment().date(); //获取当前的日期
moment().hour(); //获取当前的小时
moment().minute(); //获取当前的分钟数
moment().second();  //获取当前的秒数
moment().millisecond(); //获取当前的毫秒数

moment().quarter(); //获取当天为一年中的第几季度
moment().week(); //获取当天为一年中的第几周
moment().dayOfYear(); //获取当天为一年中的第几天

或者这样使用。

moment().get('year');
moment().get('month');  // 0 to 11
moment().get('date');
moment().get('hour');
moment().get('minute');
moment().get('second');
moment().get('millisecond');


6. 赋值

可以获取当前的年月日时分秒等。

moment().year(Number); //获取当前年
moment().month(Number) //获取当前月
moment().weekday(Number); //获取当前的星期(区域标准)
moment().date(Number); //获取当前的日期
moment().hour(Number); //获取当前的小时
moment().minute(Number); //获取当前的分钟数
moment().second(Number);    //获取当前的秒数
moment().millisecond(Number); //获取当前的毫秒数

moment().quarter(Number); //获取当天为一年中的第几季度
moment().week(Number); //获取当天为一年中的第几周
moment().dayOfYear(Number); //获取当天为一年中的第几天

或者这样使用。

moment().set('year', 2013);
moment().set('month', 3);  // April
moment().set('date', 1);
moment().set('hour', 13);
moment().set('minute', 20);
moment().set('second', 30);
moment().set('millisecond', 123);
moment().set({'year': 2018, 'month': 3});
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值