廢話不多說直奔主題,解決思路核心是
時間戳相減
靈感來自於我經常用到一個工具方法:格式化時間,也是用時間戳
function GetNumberOfDays(date1,date2){//獲得天數 //date1:開始日期,date2結束日期 var a1 = Date.parse(new Date(date1)); var a2 = Date.parse(new Date(date2)); var day = parseInt((a2-a1)/ (1000 * 60 * 60 * 24));//核心:時間戳相減,然后除以天數 return day }; var a1="12-19-2018"; var a2="2019/1/7"; var b=GetNumberOfDays(a1,a2) console.log(b);
格式化時間是以前百度回來的,現在順便拿出來給大家看看借花獻佛:
/* 該方法有效防止后台傳數據格式發生變化例如:10-19-2017《==》2017/10/19 思路:后台的時間日期==》時間戳==》標准的時間日期 y=年,m=月,d=天,h=時,u=分,s=秒 */ //標准日期時間 function DateFormat(dateTime){//格式化時間 var dateParse = Date.parse(new Date(dateTime));//轉成時間戳 var time = new Date(dateParse);//再轉成標准時間 var y = String(time.getFullYear()); var m = String(time.getMonth()+1); var d = String(time.getDate()); var h = String(time.getHours()); var u = String(time.getMinutes()); var s = String(time.getSeconds()); return {y,m,d,h,u,s} //return m+"/"+d//直接輸入自己想要的格式 } var a="2017/12/31 23:12:54"; console.log(DateFormat(a));
根據當天獲取某一天(分享點自己收藏的干貨):
function GetDay(day){ function doHandleMonth(month){ var m = month; if(month.toString().length == 1){ m = "0" + month; } return m; }; var today = new Date(); var targetday_milliseconds=today.getTime() + 1000*60*60*24*day; today.setTime(targetday_milliseconds); //注意,這行是關鍵代碼 var tYear = today.getFullYear(); var tMonth = today.getMonth(); var tDate = today.getDate(); tMonth = doHandleMonth(tMonth + 1); tDate = doHandleMonth(tDate); return tYear+"-"+tMonth+"-"+tDate; }; console.log(getDay(0))//當天 console.log(getDay(-7))//7天前 console.log(getDay(7))//7天后
