`

日期字符串解析--SimpleDateFormat严格限制日期转换setLenient(false)

 
阅读更多
public static void main(String[] args) throws ParseException {
		String s = "2019-09-01";
		System.out.println("转换前日期:"+s);
		SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
		System.out.println("转换后日期:"+sdf.parse(s));
		DateFormat df = new SimpleDateFormat("yyyyMMdd");
		System.out.println("再次转回:"+df.format(sdf.parse(s)));
	}

 结果:

转换前日期:2019-09-01
转换后日期:Sun Dec 09 00:00:00 CST 2018
再次转回:20181209

 

 

明显的转换的有问题,

后来查了下API,是由于默认转换是宽松转换引起的,改为严格转换即可

sdf.setLenient(false);

第一次转换就会报错了,如下:

转换前日期:2019-09-01

Exception in thread "main" java.text.ParseException: Unparseable date: "2019-09-01"
at java.text.DateFormat.parse(DateFormat.java:366)
at com.datalook.util.common.DateUtils.main(DateUtils.java:50)

 

 

分享到:
评论

相关推荐

    一段验证日期的有效性的JAVA代码

    我们使用`SimpleDateFormat`类来解析日期字符串。`setLenient(false)`方法将解析器设置为非宽容模式,这意味着它会严格检查日期的合法性,例如2月不能有30天或31天(除非是闰年的2月29日)。 `parse`方法尝试将日期...

    java时间转换.pdf

    在Java中,`SimpleDateFormat`是一个用于格式化和解析日期的具体类,可以将日期转换成便于阅读的形式,也可以将字符串解析成日期。它属于`java.text`包。 示例代码: ```java DateFormat format1 = new ...

    时间类型DateTime的处理.pdf

    需要注意的是,`SimpleDateFormat`的`setLenient(false)`方法用于确保日期时间格式的严格匹配,避免因不规范的输入导致意外的结果。 在实际应用中,可能需要根据不同的日期格式进行转换。例如,日期格式可能是"2002...

    时间类型DateTime的处理.docx

    在提供的代码示例中,`SimpleDateFormat`被用来根据给定的日期格式(如"yyyy-MM-dd kk:mm:ss"或"yyyy-MM-dd")解析字符串,并创建相应的`java.util.Date`对象。然后,通过调用`getTime()`方法,我们可以获取以毫秒为...

    详解SpringMVC注解@initbinder解决类型转换问题

    在使用 SpringMVC 框架时,经常会遇到表单中的日期字符串和 JavaBean 的 Date 类型的转换问题。 SpringMVC 默认不支持这个格式的转换,因此需要手动配置,自定义数据的绑定才能解决这个问题。在需要日期转换的 ...

    Spring_MVC_3.0实战指南

    这段代码注册了一个自定义的日期编辑器,用于将请求中的字符串格式转换为 `Date` 对象,并且可以设置日期格式不宽松。 #### 数据模型控制 在 Spring MVC 中,可以通过 `Model` 或 `ModelMap` 对象向视图传递数据。...

Global site tag (gtag.js) - Google Analytics