java SimpleDateFormat的问题

java SimpleDateFormat的问题

南冥有猫 发布于 2021-11-28 字数 524 浏览 740 回复 5

如图,pattern为"yyyyMMdd",dateStr为"2015-06-02",2个入参

为什么parse通过了,明明传的是带"-"不符合pattern啊,返回的date时间并不符合2015-06-02.

另外,我的API接受时间参数字符串,就是yyyyMMdd格式的,我想判断入参是否正确,怎么做比较好?

如:输入英文字符,肯定错误,"efdada"

"201505123" 这也错误,长度不正确,但如果入参是"12345678",如何处理?

有正则可以判断吗?

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

别再吹冷风 2021-12-01 5 楼

你只要知道这个是SimpleDateFormat的问题就够了:

1. 要么忽略这个问题,继续用

2. 要么像上面说的自己验证

3. 用更好的时间库,Java8有新的时间函数

不需要什么解释,解释通了也没意义,因为和你想要的不一样,结果已经表明了一切。

已下线请稍等 2021-12-01 4 楼

引用来自“maradona”的评论

貌似SimpleDateFormat是线程不安全的类,你这个静态属性是不是有问题~~~

你的问题写个正则不就可以了?当然大月小月闰月就比较蛋疼了,如果要很精确判断那就得按照日期规则写校验代码了,比如闰年规则,大小月规则

天涯离梦残月幽梦 2021-11-30 3 楼

貌似SimpleDateFormat是线程不安全的类,你这个静态属性是不是有问题~~~

你的问题写个正则不就可以了?当然大月小月闰月就比较蛋疼了,如果要很精确判断那就得按照日期规则写校验代码了,比如闰年规则,大小月规则

复古式 2021-11-29 2 楼

这是在parse的时候对-做了特殊处理,你试试2015/06/02就是不行的。

这个用正则表达式是可以判断的。简单点写就是。\d{4}(1[0-2]|0[1-9])([0-2][1-9]|3[0-1])

南汐寒笙箫 2021-11-28 1 楼

谁来回答下