moment.js

全局设置

var moment=require('moment');
moment.locale('zh-cn');

时间格式化

moment().format('MMMM Do YYYY, h:mm:ss a'); // 十一月 30日 2016, 10:30:45 上午
moment().format('dddd');                    // 星期三
moment().format("MMM Do YY");               // 11月 30日 16
moment().format('YYYY [escaped] YYYY');     // 2016 escaped 2016
moment().format();                          // 2016-11-30T10:30:45+08:00
moment().format('X');                       //"1519625422"
moment().format('x');                       //"1519625435151"

时间加减

moment().add(7,'years'); // 加7年
moment().add(7,'month');// 加7个月
moment().add(7,'days'); // 加7天
moment().add(7,'hours'); // 加7小时
moment().add(7,'minutes');// 加7分钟
moment().add(7,'seconds');// 加7秒钟

moment().subtract(7,'years'); // 减7年
moment().subtract(7,'month');// 减7个月
moment().subtract(7,'days'); // 减7天
moment().subtract(7,'hours'); // 减7小时
moment().subtract(7,'minutes');// 减7分钟
moment().subtract(7,'seconds');// 减7秒钟

相对时间

moment("20111031", "YYYYMMDD").fromNow(); // 5 年前
moment("20120620", "YYYYMMDD").fromNow(); // 4 年前
moment().startOf('day').fromNow();        // 11 小时前
moment().endOf('day').fromNow();          // 13 小时内
moment().startOf('hour').fromNow();       // 36 分钟前

多样化的本地时间

moment.locale();         // zh-cn
moment().format('LT');   // 上午10点35分
moment().format('LTS');  // 上午10点35分7秒
moment().format('L');    // 2016-11-30
moment().format('l');    // 2016-11-30
moment().format('LL');   // 2016年11月30日
moment().format('ll');   // 2016年11月30日
moment().format('LLL');  // 2016年11月30日上午10点35分
moment().format('lll');  // 2016年11月30日上午10点35分
moment().format('LLLL'); // 2016年11月30日星期三上午10点35分
moment().format('llll'); // 2016年11月30日星期三上午10点35分

存储与显示

const periodBegin = moment(date).format();//"2016-11-30T11:08:07+08:00"
// 存储到数据库

// 显示
moment(periodBegin).format('YYYY-MM-DD');

克隆

const now = moment();
console.log(now.add(3,'months').format('LL'),now.format('LL'));
// 2017年2月28日 2017年2月28日

const now2 = moment();
const anotherNow2 = moment(now2);
console.log(anotherNow2.add(3,'months').format('LL'),now2.format('LL'));
// 2017年2月28日 2016年11月30日

因为异步,所以需要克隆。因为 react 中多个事件中的 setState 会合并,另一个方法无法通过 state 获取数据,只能传入数据到方法中。

计算年龄

const moment = require('moment');
moment.locale('zh-cn',{
    relativeTime : {
        yy: "%d 岁"
    }
});
// var text = '1991-11-26T02:17:23.000Z'
moment(text).fromNow(true)
// 25岁

是今天么?

if(moment("2017-03-15 12:00:00").isSame(moment(), 'day')){
    // 是今天
}

比较时间

moment('2010-10-20').isBefore('2010-10-21'); // true

判断时间区间

moment('2016-10-30').isBetween('2016-10-29', '2016-10-30 11:30:00'); 
moment('2016-10-30').isBetween('2016-10-29', '2016-10-31');
moment('2016-10-30 11:15:12').isBetween('2016-10-30 11:00:00', '2016-10-30 13:30:00');