java正则表达式yyyymmdd_正则表达式校验YYYYMMDD⽇期
格式
⾸先,我们先了解2个概念:
1、合法的⽇期范围:
DateTime 值类型表⽰值范围在公元(基督纪元)0001 年 1 ⽉ 1 ⽇午夜 12:00:00 到公元 (C.E.) 9999 年 12 ⽉ 31 ⽇晚上 11:59:59 之间的⽇期和时间。
2、平年和闰年
时间正则表达式java
地球绕太阳公转⼀周叫做⼀回归年,⼀回归年长365⽇5时48分 46秒。因此,公历规定有平年和闰年,平年⼀年有365⽇,⽐回归年短0.2422⽇,四年共短0.9688⽇,故每四年增加⼀⽇,这⼀年有366⽇,就 是闰年。但四年增加⼀⽇⽐四个回归年⼜多0.0312⽇,400年后将多3.12⽇,故在400年中少设3个闰年,也就是在400年中只设97个闰年,这样公历年的平均长度与回归年就相近似了。由此规定:年份是整百数的必须是400的倍数才是闰年,例如1900年、2100年就不是闰年。
验证YYYY年份:
\d{3}[1-9]|\d{2}[1-9]\d|\d[1-9]\d{2}|[1-9]\d{3}
验证MMDD⽉⽇:
⼤⽉(1、3、5、7、8、10、12⽉,有31天)
(0[13578]|1[02])(0[1-9]|[12]\d|3[01])
⼩⽉(4、6、9、11⽉,有30天)
(0[469]|11)(0[1-9]|[12]\d|30)
平年2⽉(有28天)
02(0[1-9]|[1]\d|2[0-8])
闰年:
能被4整除但不能被100整除的年份
(\d{2})(0[48]|[2468][048]|[13579][26])
能被400整除的年份
((0[48]|[2468][048]|[3579][26])00)
闰年2⽉(有29天)
((\d{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))0229
最终,验证YYYYMMDD的正则表达式为
((\d{3}[1-9]|\d{2}[1-9]\d|\d[1-9]\d{2}|[1-9]\d{3})(((0[13578]|1[02])(0[1-9]|[12]\d|3[01]))|((0[469]|11)(0[1-9]|
[12]\d|30))|(02(0[1-9]|[1]\d|2[0-8]))))|(((\d{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579]
[26])00))0229)