java SimpleDateFormat的问题

CoderLeon 发布于 2015/06/09 14:13
阅读 277
收藏 0

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

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

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

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

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

有正则可以判断吗?

加载中
0
CoderLeon
CoderLeon
谁来回答下
0
loyal
loyal
Java7?8?
0
安西都护府首席程序员
安西都护府首席程序员

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

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

0
maradona
maradona

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

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

0
CoderLeon
CoderLeon

引用来自“maradona”的评论

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

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

嗯以修改,不使用static修饰了,该局部的

0
公孙二狗
公孙二狗

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

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

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

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

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

返回顶部
顶部