在日常開(kāi)發(fā)中,經(jīng)常會(huì)遇到需要獲取每月最后一天的情況。比如:我們?cè)谧鲐?cái)務(wù)系統(tǒng)時(shí),需要統(tǒng)計(jì)每月的收支情況,我們需要獲取每月的最后一天的日期。
那么,該如何使用javascript快速獲取每月月底的日期呢?
function getLastDayOfThisMonth() { var now = new Date(); var year = now.getFullYear(); var month = now.getMonth() + 1; var nextMonth = month + 1; var nextYear = year; if (nextMonth >12) { nextYear = year + 1; nextMonth = 1; } var newDate = new Date(nextYear, nextMonth - 1, 1); var lastDay = new Date(newDate.getTime() - 1000 * 60 * 60 * 24).getDate(); return lastDay; }
以上是獲取當(dāng)前月份最后一天的代碼,下面我們來(lái)詳細(xì)解釋一下這段代碼實(shí)現(xiàn)的具體方法。
第一步,我們獲取當(dāng)前的日期信息。這里我們使用了new Date()函數(shù)來(lái)獲取當(dāng)前日期。
var now = new Date();
第二步,我們獲取當(dāng)前的年份和月份。
var year = now.getFullYear(); var month = now.getMonth() + 1;
注:這里需要注意,javascript中獲得的月份是從0開(kāi)始的,所以我們?cè)谳敵銮凹?,才能得到正確的月份。
第三步,我們獲取下一個(gè)月的年份和月份。
var nextMonth = month + 1; var nextYear = year; if (nextMonth >12) { nextYear = year + 1; nextMonth = 1; }
這里判斷一下下一個(gè)月份是否已經(jīng)跨年,如果跨年,則需要將年份加1,月份重置為1。
第四步,我們將下一個(gè)月份的1號(hào)設(shè)置為新日期。
var newDate = new Date(nextYear, nextMonth - 1, 1);
注:第二個(gè)參數(shù)取值要減1,因?yàn)镴avascript的月份從0開(kāi)始,也就是說(shuō)0表示1月份,11表示12月份。
第五步,我們將新日期減去1天,即是當(dāng)前月份的最后一天。
var lastDay = new Date(newDate.getTime() - 1000 * 60 * 60 * 24).getDate(); return lastDay;
注:這里用getTime()獲取下一個(gè)月份的第一天的時(shí)間戳,然后減去一天的毫秒數(shù),得到當(dāng)前月份的最后一天日期信息。
以上代碼實(shí)現(xiàn)方法適用于所有主流瀏覽器,如果你需要更加詳細(xì)的支持,可以使用moment.js庫(kù)。
上面是獲取當(dāng)前月份的最后一天,如果我們需要獲取任意月份的最后一天,可以修改代碼。
function getLastDayOfThisMonth(year, month) { var nextMonth = month + 1; var nextYear = year; if (nextMonth >12) { nextYear = year + 1; nextMonth = 1; } var newDate = new Date(nextYear, nextMonth - 1, 1); var lastDay = new Date(newDate.getTime() - 1000 * 60 * 60 * 24).getDate(); return lastDay; }
注:傳入年份和月份即可。
以上就是關(guān)于javascript每月月底的實(shí)現(xiàn)方法,希望對(duì)大家有所幫助。