format(“YYYY-MM-DD”) “-“可以换 年/月/日或?/?/?
console.log(moment().format("YYYY-MM-DD HH:mm:ss")); //当前时间
console.log(moment().subtract(10, "days").format("YYYY-MM-DD")); //当前时间的前10天时间
console.log(moment().subtract(1, "years").format("YYYY-MM-DD")); //当前时间的前1年时间
console.log(moment().subtract(3, "months").format("YYYY-MM-DD")); //当前时间的前3个月时间
console.log(moment().subtract(1, "weeks").format("YYYY-MM-DD")); //当前时间的前一个星期时间
两个时间差
var date1 = new Date('2013/04/02 18:00')
var date2 = new Date('2013/04/02 19:22:21')
var s1 = date1.getTime(),s2 = date2.getTime();
var total = (s2 - s1)/1000;
var day = parseInt(total / (24*60*60));//计算整数天数
var afterDay = total - day*24*60*60;//取得算出天数后剩余的秒数
var hour = parseInt(afterDay/(60*60));//计算整数小时数
var afterHour = total - day*24*60*60 - hour*60*60;//取得算出小时数后剩余的秒数
var min = parseInt(afterHour/60);//计算整数分
var afterMin = total - day*24*60*60 - hour*60*60 - min*60;//取得算出分后剩余的秒数
快速求解两个时间之间的天数
已知一个起始时间一个结束时间,求这个时间段内的所有天数。
var a = moment([2016, 6, 12]);
var b = moment([2016, 6, 22]);
a.from(b);
当然啦,前提是需要引入moment.js的,可在官网下载。
方法二:
var num = new Date("2016-06-22").getTime() - new Date("2016-06-12").getTime();
var days = num/1000/60/60/24;
如果想要获取这段时间内具体的日期,
var date = '2015-05-12--2016-06-12'.split('--');
function getDate(start,end){
start = new Date(start).getTime();
end = new Date(end).getTime();
var date = [];
for(;start <= end;start += 86400000){
var tmp = new Date(start);
date.push(tmp.getFullYear()+'-'+(tmp.getMonth()+1)+'-'+tmp.getDate());
}
return date;
}
console.log(getDate(date[0],date[1]));
输出结果:
momentjs 求小时差异
var now1 = moment(moment().unix()*1000); //获取unix时间戳 需要*1000
var befor_time = moment(1470040905000) ; // 后台接口给的时间戳
//判断小时差
var hour_gap = now1.diff(befor_time,'hours');
if( hour_gap > 12) {
var day=moment(befor_time).format("YYYY-MM-DD") ;
console.log(day)
}else{
console.log(moment(befor_time).fromNow())
}
几个方法:
(1) 日期格式化
moment().format(); // 2016-02-29T14:03:30+08:00
moment().format('YYYY-MM-DD HH:mm:ss'); //2016-02-29 14:10:12
moment(new Date(2016, 2, 29, 15, 10, 12)).format('YYYY-MM-DD HH:mm:ss'); //2016-02-29 14:10:12
moment().format('X'); //1410715640.579 时间戳,秒
moment().format('x'); //1410715640579 时间戳,毫秒
(2) 相对日期
moment().add(7, 'days').add(1, 'months'); // with chaining
moment().add({days:7,months:1}); // with object literal
var startDate = moment().startOf('day').format('YYYY-MM-DD HH:mm:ss'); //一天开始
var endDate = moment().endOf('day'); //一天结尾
javascript:针对yyyy-MM-dd hh:mm:ss
格式的毫秒转换
例如转换:
new Date("2015-11-7 22:05").getTime();
为了转换时间为毫秒,这个表达式在Chrome下没有问题,可以正常执行,不过在FireFox下则解析不了:
获取的数据为NaN,控制台会有 Date { Invalid Date } .
如果转换格式为 yyyy/MM/dd hh:mm:ss
,则都可以支持.所以一般解决办法是通过替换.
另外也可以引入一些第三方的JS库来处理这个问题,例如moment.js,
eg:
var datetime = moment().format(‘YYYY-MM-DD HH:mm:ss’);
ouput: 2015-11-7 22:18:39
var time = moment(‘2015-11-7 22:17:47′,’YYYY-MM-DD HH:mm:ss’).valueOf();
ouput:1446905867000
快捷的时间转化-moment
转化:
e.g: moment(timeStamp).format('YYYY-MM-DD HH:mm:ss');
计算:
let date21 = moment().format('MMMM Do YYYY, h:mm:ss a');//当前时间
let date22 = moment().subtract(1, 'minutes').format('MMMM Do YYYY, h:mm:ss a');//1分钟前
let date24 = moment().subtract(1, 'hours').format('MMMM Do YYYY, h:mm:ss a');//1小时前
let date26 = moment().subtract(1, 'days').format('MMMM Do YYYY, h:mm:ss a');//1天前
let date27 = moment().subtract(1, 'weeks').format('MMMM Do YYYY, h:mm:ss a');//1周前
//时间戳
let date3 = moment().valueOf();//当前时间的时间戳
let date4 = moment().subtract(1, 'minutes').valueOf();//1分钟前时间戳