社区
Java SE
帖子详情
关于日期的
syj247
2010-04-12 09:03:33
求一个关于日期的正则。。
要能够判断2月的天数。。。
怎么搞 请高手指点
...全文
118
10
打赏
收藏
关于日期的
求一个关于日期的正则。。 要能够判断2月的天数。。。 怎么搞 请高手指点
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zoeg
2010-04-13
打赏
举报
回复
首先,非常佩服2楼的耐心,我反正是看到吐血;
可惜,找到一个例外:1600-02-29是正确的日期格式,却无法匹配!!!
myeclipse0123
2010-04-13
打赏
举报
回复
不是java不适用,是操作系统只能到那一年应该是1700年
zoeg
2010-04-13
打赏
举报
回复
^((?!0000)[0-9]{4}(-(0?[1-9]|1[0-2])-([01]?[1-9]|10|2[0-8])|-(0?[13-9]|1[0-2])-(29|30)|-(0?[13578]|1[02])-31)|(?!0000)([0-9]{2}(04|08|[2468][048]|[13579][26])|(0[0-9]|1[0-5]|[2468][048]|[13579][26])00)-0?2-29)$
这个对于一般的日期校验已经相当精确了;
不过经过一番研究,居然发现了新大陆:
1、1582-10-05到1582-10-14之间的日期不合法,因为根本没有这10天;
2、闰年还要考虑3200年的周期;
3、闰年同时还要考虑172800年的周期(不过要是因为没有做这个校验产生问题,那我也认了)。
真麻烦,继续努力中,回头给你们贴更精确完善的!!!
zoeg
2010-04-13
打赏
举报
回复
刚才的弄错了,果然是不做不知道,一做吓一跳:
闰年规则中,似乎百年不闰对公元1501年以前不适用,不知道是java API出错了,还是就是这样的!!!
重写了下,修正点小BUG,另外再来个兼容的,可以在js上跑:
^((?!0000)[0-9]{4}(-(0?[1-9]|1[0-2])-([01]?[1-9]|10|2[0-8])|-(0?[13-9]|1[0-2])-(29|30)|-(0?[13578]|1[02])-31)|(?!0000)([0-9]{2}(04|08|[2468][048]|[13579][26])|(0[0-9]|1[0-5]|[2468][048]|[13579][26])00)-0?2-29)$
zoeg
2010-04-13
打赏
举报
回复
我来一个强大的,用几万个边沿数据测试过了:
^(?!0000)[0-9]{4}-((0?[1-9]|1[0-2])-([01]?[1-9]|10|2[0-8]|(?<=-0?[13578]-|-1[02]-)31|(?<!-0?2-)(29|30))|(?<=(?<=[02468][048]|[13579][26]|(?<![02468][048]|[13579][26])00)-)0?2-29)$
注意:(?<=)向左预查需要高版本的正则表达式,非常遗憾地,如果你想用在js上,版本就不够!!!
syj247
2010-04-12
打赏
举报
回复
我的也老没学好。。。 刚那个真的有点长·。 我在Eclipse下分了六行。。。
godismydaughter
2010-04-12
打赏
举报
回复
[Quote=引用 1 楼 sbfivwsll 的回复:]
^((\d{3}[1-9]|\d{2}[1-9]\d{1}|\d{1}[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][2……
[/Quote]为何我的正则老是学不好。
syj247
2010-04-12
打赏
举报
回复
[Quote=引用 1 楼 sbfivwsll 的回复:]
^((\d{3}[1-9]|\d{2}[1-9]\d{1}|\d{1}[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……
[/Quote]
谢谢
铑枪--突廆孒
2010-04-12
打赏
举报
回复
当然能对2月份的29日进行验证了
铑枪--突廆孒
2010-04-12
打赏
举报
回复
^((\d{3}[1-9]|\d{2}[1-9]\d{1}|\d{1}[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))-02-29)$
这个正则表达式有点长,是验证的日期格式是 四位年-2位月-2位日的形式
字符串转
日期
,
日期
转字符串,
日期
比较
本文详细介绍了如何使用Java进行
日期
和时间的转换与比较,包括字符串转
日期
、
日期
转字符串及
日期
之间的比较方法,适用于各种时间戳场景的处理。
java获取两个
日期
之间的所有
日期
文章介绍了在Java中如何获取两个
日期
之间所有
日期
的方法,包括创建数组、遍历
日期
以及使用`ChronoUnit.DAYS.between`计算
日期
间隔。提供了一个使用`LocalDate`和`ArrayList`的代码示例,展示如何生成两个指定
日期
之间所有
日期
的列表。
日期
问题-回文
日期
本文介绍了一种编程方法,用于计算给定88位数
日期
(如20200202)之后的下一个回文
日期
(如20211202)和ABABBABA型回文
日期
(如21211212)。作者通过检查
日期
有效性、回文特征和特定模式来找出这两个特殊的
日期
。
【
日期
问题专题】&【蓝桥杯备考训练】:
日期
差值、
日期
问题、回文
日期
、特殊的回文
日期
、
日期
计算【已更新完成】
该博客围绕
日期
相关问题展开,涵盖
日期
差值、
日期
问题、回文
日期
等。涉及上海交通大学考研机试题、蓝桥杯省赛题等。介绍了各题的输入输出格式、数据范围,给出解题思路,如用统一模板计算
日期
差值,从起始
日期
枚举判断
日期
合法性等,还附上对应代码。
JS判断当前
日期
必须大于选择
日期
本文介绍了一种使用JavaScript进行
日期
比较的方法,确保所选
日期
不会超过当前
日期
。通过将
日期
转换为时间戳并进行减法运算,可以有效判断选择
日期
是否合理。
Java SE
62,622
社区成员
307,252
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章