寫在前面的話
最近需要寫個小功能,就把這個功能拆成小方法了,覺得日期這玩意兒基本上都能用到乙漓,就記錄下來,方便自己以后查找释移。
共有如下幾種情況:
1叭披、開始日期小于結(jié)束日期
- 跨年月的:如2016-12-30至2017-06-12
- 不跨年跨月的:2017-01-02至2017-06-12
- 不跨年不跨月的:2017-06-01至2017-06-12
2、兩個日期相等玩讳,天數(shù)為0涩蜘,之間沒有日期
3、開始日期小于結(jié)束日期熏纯,天數(shù)為0同诫,之間沒有日期
<b>PS</b>:唯一的坑就是new Date()月份的參數(shù)介于 0 到 11 之間。也就是說樟澜,如果希望把月設(shè)置為 8 月误窖,則參數(shù)應(yīng)該是 7。
/**
**datestr:形如‘2017-06-12’的字符串
**return Date 對象
**/
function getDate (datestr) {
var temp = datestr.split("-");
if (temp[1] === '01') {
temp[0] = parseInt(temp[0],10) - 1;
temp[1] = '12';
} else {
temp[1] = parseInt(temp[1],10) - 1;
}
//new Date()的月份入?yún)?shí)際都是當(dāng)前值-1
var date = new Date(temp[0], temp[1], temp[2]);
return date;
}
/**
***獲取兩個日期間的所有日期
***默認(rèn)start<end
**/
function getDiffDate (start, end) {
var startTime = getDate(start);
var endTime = getDate(end);
var dateArr = [];
while ((endTime.getTime() - startTime.getTime()) > 0) {
var year = startTime.getFullYear();
var month = (startTime.getMonth()+1).toString().length === 1 ? "0" + (parseInt(startTime.getMonth().toString(),10) + 1) : (startTime.getMonth() + 1);
var day = startTime.getDate().toString().length === 1 ? "0" + startTime.getDate() : startTime.getDate();
dateArr.push(year + "-" + month + "-" + day);
startTime.setDate(startTime.getDate() + 1);
}
return dateArr;
}
用到的方法:
getTime() :返回從 1970 年 1 月 1 日至今的毫秒數(shù)秩贰。
getDate():返回日期霹俺,一個月中的某一天
setDate():設(shè)置日期,一個月中的某一天