Moment.js时间

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分钟前时间戳

猜你喜欢

转载自blog.csdn.net/wulex/article/details/80399644