js 日期格式操作
阿新 • • 發佈:2019-02-11
//擴充套件Date的format方法 Date.prototype.format = function (format) { var o = { "M+": this.getMonth() + 1, "d+": this.getDate(), "h+": this.getHours(), "m+": this.getMinutes(), "s+": this.getSeconds(), "q+": Math.floor((this.getMonth() + 3) / 3), "S": this.getMilliseconds() } if (/(y+)/.test(format)) { format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length)); } for (var k in o) { if (new RegExp("(" + k + ")").test(format)) { format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length)); } } return format; } /** *轉換日期物件為日期字串 * @param date 日期物件 * @param isFull 是否為完整的日期資料, * 為true時, 格式如"2000-03-05 01:05:04" * 為false時, 格式如 "2000-03-05" * @return 符合要求的日期字串 */ function getSmpFormatDate(date, isFull) { var pattern = ""; if (isFull == true || isFull == undefined) { pattern = "yyyy-MM-dd hh:mm:ss"; } else { pattern = "yyyy-MM-dd"; } return getFormatDate(date, pattern); } /** *轉換當前日期物件為日期字串 * @param date 日期物件 * @param isFull 是否為完整的日期資料, * 為true時, 格式如"2000-03-05 01:05:04" * 為false時, 格式如 "2000-03-05" * @return 符合要求的日期字串 */ function getSmpFormatNowDate(isFull) { return getSmpFormatDate(new Date(), isFull); } /** *轉換long值為日期字串 * @param l long值 * @param isFull 是否為完整的日期資料, * 為true時, 格式如"2000-03-05 01:05:04" * 為false時, 格式如 "2000-03-05" * @return 符合要求的日期字串 */ function getSmpFormatDateByLong(l, isFull) { return getSmpFormatDate(new Date(l), isFull); } /** *轉換long值為日期字串 * @param l long值 * @param pattern 格式字串,例如:yyyy-MM-dd hh:mm:ss * @return 符合要求的日期字串 */ function getFormatDateByLong(l, pattern) { return getFormatDate(new Date(l), pattern); } /** *轉換日期物件為日期字串 * @param l long值 * @param pattern 格式字串,例如:yyyy-MM-dd hh:mm:ss * @return 符合要求的日期字串 */ function getFormatDate(date, pattern) { if (date == undefined) { date = new Date(); } if (pattern == undefined) { pattern = "yyyy-MM-dd hh:mm:ss"; } return date.format(pattern); } //開始時間不能小於當前時間 function startTimeIsBigThanTotay(startTime){ var startdate = new Date((startTime).replace(/-/g,"/")); var date = new Date(); if(startdate < date) { return false; } else { return true; } } //結束時間不能小於當前時間 function endThanTotay(endTime){ var enddate = new Date((endTime).replace(/-/g,"/")); var nowdate = new Date(); if(enddate < nowdate) { return false; } else { return true; } } //結束時間不能小於開始時間 function endThanStart(startTime,endTime){ var startdate = new Date((startTime).replace(/-/g,"/")); var enddate = new Date((endTime).replace(/-/g,"/")); if(enddate < startdate) { return false; } else { return true; } } function diffTime(startDate,endDate) { if(endDate==""||endDate==undefined) endDate = new Date().getTime(); var diff=Math.abs(endDate - startDate);//時間差的毫秒數 //計算出相差天數 var days=Math.floor(diff/(24*3600*1000)); //計算出小時數 var daySecond=diff%(24*3600*1000); //計算天數後剩餘的毫秒數 var hours=Math.floor(daySecond/(3600*1000)); //計算相差分鐘數 var hourSecond=daySecond%(3600*1000); //計算小時數後剩餘的毫秒數 var minutes=Math.floor(hourSecond/(60*1000)); //計算相差秒數 var minSecond=hourSecond%(60*1000); //計算分鐘數後剩餘的毫秒數 var seconds=Math.round(minSecond/1000); var returnStr = seconds + "秒"; if(minutes>0) { returnStr = minutes + "分" + returnStr; } if(hours>0) { returnStr = hours + "小時" + returnStr; } if(days>0) { returnStr = days + "天" + returnStr; } return returnStr; } function diffDate(startDate, endDate, type) { startDate = typeof startDate == 'string' ? new Date(startDate) : startDate; startDate = startDate.getTime(); endDate = typeof endDate == 'string' ? new Date(endDate) : endDate; endDate = endDate.getTime(); type = type || 'hour'; var diffValue = Math.abs(endDate - startDate); var second = 1000, minute = second * 60, hour = minute * 60, day = hour * 24, month = day * 30, year = month * 12; var timeType = { second: second, minute: minute, hour: hour, day: day, month: month, year: year }; return Math.ceil(diffValue / timeType[type]); }