網(wǎng)站首頁 編程語言 正文
日期部分校驗
概念
首先,我們先了解2個概念:
1、合法的日期范圍:
? ? DateTime?值類型表示值范圍在公元(基督紀元)0001 年 1 月 1 日午夜 12:00:00 到公元 (C.E.) 9999 年 12 月 31 日晚上 11:59:59 之間的日期和時間。
2、平年和閏年
地球繞太陽公轉(zhuǎn)一周叫做一回歸年,一回歸年長365日5時48分 46秒。因此,公歷規(guī)定有平年和閏年,平年一年有365日,比回歸年短0.2422日,四年共短0.9688日,故每四年增加一日,這一年有366日,就 是閏年。但四年增加一日比四個回歸年又多0.0312日,400年后將多3.12日,故在400年中少設(shè)3個閏年,也就是在400年中只設(shè)97個閏年,這樣公歷年的平均長度與回歸年就相近似了。由此規(guī)定:年份是整百數(shù)的必須是400的倍數(shù)才是閏年,例如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
最終,驗證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)
校驗yyyy-MM-dd
精確到日即可,即年月日,格式:yyyy-MM-dd,例如:2016-12-13
((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29))
時間部分校驗
校驗HHmmss
校驗時分秒:格式:HHmmss
([0-1]?[0-9]|2[0-3])([0-5][0-9])([0-5][0-9])
校驗HH-mm-ss
校驗時分秒:格式:HH-mm-ss
([0-1]?[0-9]|2[0-3])-([0-5][0-9])-([0-5][0-9])
校驗日期+時間部分
校驗yyyyMMddHHmmss
((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})(((0[13578]|1[02])(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)(0[1-9]|[12][0-9]|30))|(02(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))0229))([0-1]?[0-9]|2[0-3])([0-5][0-9])([0-5][0-9])
校驗?yyyy-MM-dd HH:mm:ss
校驗 yyyy-MM-dd HH:mm:ss(日期和時間之間有一個或多個空格)
((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29))\\s+([0-1]?[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])
應(yīng)用舉例
衛(wèi)生數(shù)據(jù)元校驗
case "D8":
if(!value_str.matches("((\\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)")){
valid = false;
tipInfo = "不符合日期格式y(tǒng)yyyMMdd";
break;
}
break;
case "T6":
if(!value_str.matches("([0-1]?[0-9]|2[0-3])([0-5][0-9])([0-5][0-9])")){
valid = false;
tipInfo = "不符合時間格式HHmmss";
break;
}
break;
case "DT15":
if(!value_str.matches("(((\\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))(T)(([0-1]?[0-9]|2[0-3])([0-5][0-9])([0-5][0-9]))")){
valid = false;
tipInfo = "不符合日期時間格式y(tǒng)yyyMMddTHHmmss";
break;
}
break;
參考文章:
https://www.cnblogs.com/Alisa68/p/13208704.html
https://www.cnblogs.com/yyy-blog/p/10593983.html
總結(jié)
原文鏈接:https://blog.csdn.net/chuixue24/article/details/111352791
相關(guān)推薦
- 2022-06-01 python?全角半角互換的實現(xiàn)示例_python
- 2022-08-30 關(guān)于Flask高級_內(nèi)置信號的介紹和兩個小實例
- 2022-07-12 解決錯誤:org.apache.ibatis.binding.BindingException
- 2022-03-17 .NET?6開發(fā)TodoList應(yīng)用引入第三方日志庫_實用技巧
- 2022-08-21 python數(shù)字圖像處理之基本形態(tài)學(xué)濾波_python
- 2022-05-08 記一個React.memo引起的bug_React
- 2024-01-29 Spring 的存儲和獲取Bean
- 2022-12-07 C++中new的用法及說明_C 語言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支