Moment.js時間

風靈使發表於2018-05-22

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分鐘前時間戳

相關文章