js計算兩個日期相差的正月數
/**
**判斷是否為當年當月的最後一天
*/
function isLastDay(yearV,monthV,dayV){
var new_year = yearV; //取當前的年份
var new_month = monthV+1;//取下一個月的第一天,方便計算(最後一天不固定)
if(new_month>12) //如果當前大於12月,則年份轉到下一年
{
new_month -=12; //月份減
new_year++; //年份增
}
var new_date = new Date(new_year,new_month,1); //取當年當月中的第一天
var lastDay = (new Date(new_date.getTime()-1000*60*60*24)).getDate();//獲取當月最後一天日期
if(lastDay==dayV){
return true;
}else{
return false;
}
}
/**
**計算距離月底還有幾天
*/
function getLastDayAway(yearV,monthV,dayV){
var new_year = yearV; //取當前的年份
var new_month = monthV+1;//取下一個月的第一天,方便計算(最後一天不固定)
if(new_month>12) //如果當前大於12月,則年份轉到下一年
{
new_month -=12; //月份減
new_year++; //年份增
}
var new_date = new Date(new_year,new_month,1); //取當年當月中的第一天
var lastDay = (new Date(new_date.getTime()-1000*60*60*24)).getDate();//獲取當月最後一天日期
var away_day = lastDay-dayV;
return away_day;
}
/**
* @param startDate
* 開始日期
* @param endDate
* 結束日期
* @return 計算相差月份,必須滿足正好一個月才進一
*/
function getDateMonthSub(startDate, endDate) {
if (startDate == null || startDate == undefined || startDate == ""
|| endDate == null || endDate == undefined || endDate == "")
return 0;
var endDate = new Date(endDate);
var startDate = new Date(startDate);
var renNumber = 0;
var yearToMonth = (endDate.getFullYear() - startDate.getFullYear()) * 12;
// 計算年份相差月份
renNumber += yearToMonth;
var startYear = startDate.getFullYear();// 開始日期-年份
var endYear = endDate.getFullYear();// 結束日期-年份
var startMon = startDate.getMonth();// 開始日期-月份
var endMon = endDate.getMonth();// 結束日期-月份
var startDay = startDate.getDate();// 開始日期-日
var endDay = endDate.getDate();// 開始日期-日
var monthToMonth = endDate.getMonth() - startDate.getMonth();
// 計算月份相差
renNumber += monthToMonth;
// 如果開始日期是最後一天並且結束日期不是最後一天,那麼返回值-1
if (isLastDay(startYear, startMon, startDay)
&& !isLastDay(endYear, endMon, endDay)) {
renNumber -= 1;
return renNumber;
} else {
// 如果開始日期和結束日期都不是最後一天
if (!isLastDay(startYear, startMon, startDay)
&& !isLastDay(endYear, endMon, endDay)) {
// 如果都不是最後一天,就需要計算開始日期和結束日期的天數距離結束還有幾天,分別為start_last,end_last
var start_last = getLastDayAway(startYear, startMon, startDay);
var end_last = getLastDayAway(endYear, endMon, endDay);
alert(end_last)
// 如果結束日期距離月底的天數比開始日期距離月底的天數大,則返回值-1
if (end_last > start_last) {
renNumber -= 1;
return renNumber;
} else {
return renNumber;
}
} else {
// 如果開始日期和結束日期的天都是當月的最後一天,那麼相差月份就是實際月份相減的值
// 其他情況都直接返回renNumber
return renNumber;
}
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25261409/viewspace-1058704/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- JavaScript計算兩個日期相差天數JavaScript
- java計算兩個日期相差年數Java
- javascript計算兩個日期相差的天數JavaScript
- Calendar:計算兩個日期相差的天數
- 計算兩個日期相差的天數,Calendar用法
- javascript計算兩個時間日期相差的天數JavaScript
- js計算兩個日期相差的天數(不包含小時分鐘秒)JS
- javascript計算兩個日期相差的天數程式碼例項JavaScript
- 計算兩個時間日期相差的天數、分鐘數或者秒數
- php 計算兩個日期之間相差多少天PHP
- java實現計算兩個日期相差多少月、比較兩個日期大小 等常用日期操作Java
- JavaScript 計算兩個時間相差天數JavaScript
- Java中計算兩個日期間的天數Java
- 25:計算兩個日期之間的天數
- javascript 計算兩個日期間差的天數JavaScript
- Oracle計算兩個日期之間的天數Oracle
- js獲取兩個時間相差的天數JS
- Java8 學習之計算日期相差天數Java
- 計算兩個時間點相差天數例項程式碼
- JS-計算日期差值;計算日期之間的月數JS
- 計算給定兩個日期之間的工作日個數
- C語言實現,計算兩天之間相差的天數C語言
- Python + SeaTable | 計算兩個日期間的工作日天數Python
- js如何計算當前日期指定天數前的日期JS
- Java 中,如何計算兩個日期之間的差距?Java
- oracle計算兩個日期的時間差時分秒Oracle
- 計算任意兩個日期之間的天數,週數。《python大學實用教程》例子Python
- ORACLE 計算2個日期之間的天數Oracle
- 計算2個日期間的所有日期
- sql server 計算兩個時間 相差的 幾天幾時幾分幾秒SQLServer
- 計算兩個日期之間所有的工作日
- javascript如何計算兩個日期之間的時間間隔JavaScript
- js 計算兩個時間的時間差JS
- javascript計算兩個日期之間的時間差程式碼例項JavaScript
- 如何計算兩個時間間隔的天數
- js獲取指定時間日期和當前時間日期的相差多少時間JS
- js計算圖片內點個數JS
- js計算指定日期幾天前或者幾天後的日期JS