关于java里的SimpleDateFormat使用
一、背景
早上刷逼乎,看到一篇文章,问Java的SimpleDateFormat有没有踩坑。年份如果用了“Y”,解析结果可能和想象的不一样。
二、主要内容
主要内容如下代码展示
String s = "2019-12-31 01:10:10";
//正确示例
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
System.out.println(sdf.parse(s));
//错误示例
sdf = new SimpleDateFormat("YYYY-MM-dd");
System.out.println(sdf.parse(s));
如果年这里用了大写的Y,打印结果:
Tue Dec 31 00:00:00 CST 2019
Sun Dec 30 00:00:00 CST 2018
看了文章之后,到了公司我就查看了一下所有的代码,所幸用的都是小写的y。
忘了为什么是小写的y,之前可能了解过,不过现在忘了,已经是肌肉记忆了吧。
某乎上说明,YYYY是week-based-year,表示:当天所在的周属于的年份。
这和乎上的描述不一样啊,我这打印的结果怎么倒退了一年了?我再研究研究。