格式化日期字符串时遇到的问题

本文介绍了在Java中处理日期时常见的几个问题及解决方案,包括使用Calendar类替代Date类获取年月日,SimpleDateFormat类的正确使用方法,以及如何避免格式化过程中出现的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、Date类的获取年月日的方法都划横线,不推荐使用了。

使用Calendar类获取,使用该类的setTime将Date转化为Calendar,再使用get()方法获取年月日等。

2、使用SimpleDateFormat类格式化日期型字符串时报错不能解析

从网上查了半天都没有找到问题所在,最后发现原因:

如果你设置的格式是年月日时分秒,则你要格式化的字符串也要有这些,否则报错。

比如我设置的格式是年月日时分秒,结果要格式化的字符串是年月日时分,没有秒,所以报错。代码如下:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
我要是格式化一个“2018-08-08 12:30"字符串就会报无法转化。

3、最让人绝望的问题-获取的月份和日不对

原因:我将设置的格式的字符串中的年份用的大写的,如

SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-dd HH:mm");
则打印出的被格式化成Date型的数据年份没有问题,但是月份变成了12月,日期变成了31日。

解决方法:将年份改成小写就没有问题了。

网上的资料都是说年份不区分大小写,害人不浅。

总结:实践才是检验真理的唯一标准。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值