让SimpleDateFormat的parse方法严格解析

本文详细介绍了SimpleDateFormat的parse方法的工作原理,特别是lenient参数的作用。通过示例代码演示了如何设置lenient参数来改变日期解析的宽松度,从而避免将错误格式的日期字符串转化为有效日期。

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

simpledateformat的parse默认是弱校验的.

比如说如果你的format为"yyyy-MM-dd" ,输入的字串如果是"2013-08-28"能转化正常.

输入的如果是"2013-13-28"则会生成Date:2014-01-28.也就是顺加.

如果希望把"2013-13-28"当做错误格式.则可以设定setLenient(false);

代码如下

public class DateTest {  
    public static void main(String[] args) throws ParseException {  
        DateFormat format = new SimpleDateFormat("dd/MM/yyyy");  
        format.setLenient(false);  
        Date date = format.parse("33/12/2011");  
        System.out.println(date);  
    }  
} 

输出结果为:

Exception in thread "main" java.text.ParseException: Unparseable date: "33/12/2011"
at java.text.DateFormat.parse(Unknown Source)
at DateTest.main(DateTest.java:11)

若设置

format.setLenient(false);

则输出结果为

Mon Jan 02 00:00:00 CST 2012
setLenient用于设置Calendar是否宽松解析字符串,如果为false,则严格解析;默认为true,宽松解析。

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值