JS實(shí)現(xiàn)判斷兩個(gè)日期不能跨年和跨月
js判斷兩個(gè)日期不能跨年和跨月,例如20230108,20230208
一、可以使用JavaScript中Date對象的方法來判斷兩個(gè)日期是否跨年和跨月。以下是一個(gè)實(shí)現(xiàn)該功能的示例代碼:
const date1 = new Date('2023-01-08');
const date2 = new Date('2023-02-08');
if (date1.getFullYear() !== date2.getFullYear() || date1.getMonth() !== date2.getMonth()) {
console.log('日期跨年或跨月');
} else {
console.log('日期不跨年也不跨月');
}在上面的代碼中,我們首先創(chuàng)建了兩個(gè)Date對象,分別代表2023年1月8日和2023年2月8日。然后,我們使用getFullYear()方法和getMonth()方法獲取日期對象的年份和月份,并將它們進(jìn)行比較,如果年份或月份不相等,則說明日期跨年或跨月。
二、如果想要驗(yàn)證兩個(gè)日期字符串是否跨年或跨月,可以使用類似以下的代碼:
const dateString1 = '20230108';
const dateString2 = '20230208';
const date1 = new Date(`${dateString1.slice(0, 4)}-${dateString1.slice(4, 6)}-${dateString1.slice(6, 8)}`);
const date2 = new Date(`${dateString2.slice(0, 4)}-${dateString2.slice(4, 6)}-${dateString2.slice(6, 8)}`);
if (date1.getFullYear() !== date2.getFullYear() || date1.getMonth() !== date2.getMonth()) {
console.log('日期跨年或跨月');
} else {
console.log('日期不跨年也不跨月');
}在上面的代碼中,我們首先將兩個(gè)日期字符串轉(zhuǎn)換為對應(yīng)的Date對象,然后進(jìn)行比較,判斷是否跨年或跨月。
三、除了使用Date對象的方法來判斷兩個(gè)日期是否跨年和跨月,還可以使用字符串的比較來實(shí)現(xiàn)。具體來說,我們可以將兩個(gè)日期字符串中的年份和月份分別取出來,然后將它們進(jìn)行比較,如果年份或月份不相等,則說明日期跨年或跨月。
以下是一個(gè)使用字符串比較的示例代碼:
const dateString1 = '20230108';
const dateString2 = '20230208';
if (dateString1.slice(0, 6) !== dateString2.slice(0, 6)) {
console.log('日期跨年或跨月');
} else {
console.log('日期不跨年也不跨月');
}在上面的代碼中,我們首先將兩個(gè)日期字符串中的年份和月份分別取出來,然后將它們進(jìn)行比較,判斷是否跨年或跨月。具體來說,dateString1.slice(0, 6)表示取出字符串中的前6個(gè)字符,即年份和月份,dateString2.slice(0, 6)同理。如果兩個(gè)字符串的前6個(gè)字符不相等,則說明日期跨年或跨月。
四、驗(yàn)證是否是YYYYMMDD格式 如果要進(jìn)一步驗(yàn)證日期字符串是否符合指定的格式(如YYYYMMDD),可以使用正則表達(dá)式進(jìn)行匹配。以下是一個(gè)示例函數(shù),它接受一個(gè)日期字符串和一個(gè)格式字符串,然后檢查日期字符串是否符合指定的格式:
function isValidDateFormat(dateStr, formatStr) {
const regex = new RegExp(formatStr);
return regex.test(dateStr);
}在這個(gè)函數(shù)中,我們使用RegExp構(gòu)造函數(shù)創(chuàng)建一個(gè)正則表達(dá)式,該正則表達(dá)式由格式字符串動態(tài)生成。然后我們使用test方法來檢查日期字符串是否符合這個(gè)正則表達(dá)式,如果符合則返回true,否則返回false。
例如,如果我們要驗(yàn)證日期字符串是否符合YYYYMMDD的格式,可以調(diào)用該函數(shù)并傳入"\d{4}\d{2}\d{2}"作為格式字符串。需要注意的是,在JavaScript中,由于反斜杠字符具有特殊含義,所以在正則表達(dá)式字符串中需要將反斜杠轉(zhuǎn)義。
以下是一個(gè)完整的示例,它使用這兩個(gè)函數(shù)來檢查兩個(gè)日期字符串是否在同一年和同一月,且符合指定的格式:
function datesAreInSameMonthAndYear(dateStr1, dateStr2, formatStr) {
if (!isValidDateFormat(dateStr1, formatStr) || !isValidDateFormat(dateStr2, formatStr)) {
return false; // 如果日期字符串不符合指定的格式,則返回false
}
// 將日期字符串轉(zhuǎn)換為Date對象
const date1 = new Date(dateStr1.slice(0, 4), dateStr1.slice(4, 6) - 1, dateStr1.slice(6));
const date2 = new Date(dateStr2.slice(0, 4), dateStr2.slice(4, 6) - 1, dateStr2.slice(6));
// 檢查日期是否在同一年和同一月
return (date1.getFullYear() === date2.getFullYear() && date1.getMonth() === date2.getMonth());
}
function isValidDateFormat(dateStr, formatStr) {
const regex = new RegExp(formatStr);
return regex.test(dateStr);
}
const dateStr1 = '20230108';
const dateStr2 = '20230208';
const formatStr = '\d{4}\d{2}\d{2}';
if (datesAreInSameMonthAndYear(dateStr1, dateStr2, formatStr)) {
console.log(`${dateStr1} and ${dateStr2} are in the same year and month.`);
} else {
console.log(`${dateStr1} and ${dateStr2} are not in the same year and month.`);
}在這個(gè)示例中,我們首先定義了兩個(gè)日期字符串(dateStr1和dateStr2)和一個(gè)格式字符串(formatStr)。然后我們調(diào)用datesAreInSameMonthAndYear函數(shù)來檢查這兩個(gè)日期字符串是否在同一年和同一月,同時(shí)符合指定的格式。最后,根據(jù)函數(shù)的返回值打印相應(yīng)的提示信息。
到此這篇關(guān)于JS實(shí)現(xiàn)判斷兩個(gè)日期不能跨年和跨月的文章就介紹到這了,更多相關(guān)JS判斷日期內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
js實(shí)現(xiàn)關(guān)閉網(wǎng)頁出現(xiàn)是否離開提示
本篇文章主要給大家?guī)硪粋€(gè)JS實(shí)用功能,監(jiān)聽瀏覽器在關(guān)閉的時(shí)候提示出是否要離開的小功能,需要的朋友學(xué)習(xí)下吧。2017-12-12
JavaScript?Generator異步過度的實(shí)現(xiàn)詳解
生成器Generator是JavaScript?ES6引入的特性,它讓我們可以分段執(zhí)行一個(gè)函數(shù)。但是在談?wù)撋善鳎℅enerator)之前,我們要先了解迭代器Iterator2022-08-08
JavaScript中toLocaleString()和toString()的區(qū)別實(shí)例分析
這篇文章主要介紹了JavaScript中toLocaleString()和toString()的區(qū)別,結(jié)合實(shí)例形式對比分析了toLocaleString()和toString()針對字符串、數(shù)組與日期操作過程中的區(qū)別與使用技巧,需要的朋友可以參考下2018-08-08
一些常用且實(shí)用的原生JavaScript函數(shù)
日常開始中常用到的一些原生JavaScript函數(shù),比較實(shí)用, 今天特地整理一下,分享給大家,希望對大家有用,會常更新,同時(shí)也歡迎大家補(bǔ)充.2010-09-09
js中setTimeout的妙用--防止循環(huán)超時(shí)
本文主要介紹了使用setTimeout實(shí)現(xiàn)防止循環(huán)超時(shí)的方法,具有很好的參考價(jià)值。下面跟著小編一起來看下吧2017-03-03
用nodejs實(shí)現(xiàn)PHP的print_r函數(shù)代碼
這篇文章主要介紹了用nodejs實(shí)現(xiàn)PHP的print_r函數(shù)代碼,需要的朋友可以參考下2014-03-03
js實(shí)現(xiàn)接收表單的值并將值拼在表單action后面的方法
這篇文章主要介紹了js實(shí)現(xiàn)接收表單的值并將值拼在表單action后面的方法,涉及JavaScript動態(tài)操作字符串及表單元素的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11

