setLenient(true/false)

缺乏、安全感 2024-03-23 02:17 152阅读 0赞

日期相关—SimpleDateFormat的setLenient(true/false)——-自动计算日期

有时候我们需要判断用户的日期格式是否正确,

虽然绝大多数会在前台处理,但是也有需要从文件流读入的情况,如果日期不合格就需要抛异常,这时候就需要禁止SimpleDateFormat的自动计算功能。

此时就需要用到setLenient(),这个方法的含义是是否严格解析日期,具体用法如下。

  1. package com.test.date;
  2. import java.text.SimpleDateFormat;
  3. import java.util.Date;
  4. public class TestDate {
  5. public static void main(String[] args) {
  6. //SimpleDateFormat的setLenient(true)
  7. //这种情况下java会把你输入的日期进行计算,比如55个月那么就是4年以后,这时候年份就会变成03年了
  8. String dob= "1/55/1999";
  9. Date dateofbirth =null;
  10. SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
  11. try {
  12. dateFormat.setLenient(true);
  13. dateofbirth = dateFormat.parse(dob);
  14. } catch (Exception e) {
  15. e.printStackTrace();
  16. }
  17. System.out.println(dateofbirth);
  18. //输出是Tue Jul 01 00:00:00 CST 2003
  19. //SimpleDateFormat的setLenient(false)
  20. //这种情况下java不会把你输入的日期进行计算,比如55个月那么就是不合法的日期了,直接异常
  21. String dob2= "1/55/1999";
  22. Date dateofbirth2 =null;
  23. SimpleDateFormat dateFormat2 = new SimpleDateFormat("dd/MM/yyyy");
  24. try {
  25. dateFormat2.setLenient(false);
  26. dateofbirth2 = dateFormat2.parse(dob2);
  27. } catch (Exception e) {
  28. e.printStackTrace();
  29. }
  30. System.out.println(dateofbirth2);
  31. /*
  32. * 输出如下
  33. * java.text.ParseException: Unparseable date: "1/55/1999"
  34. at java.text.DateFormat.parse(Unknown Source)
  35. at com.test.date.TestDate.main(TestDate.java:28)
  36. null
  37. */
  38. }
  39. }

发表评论

表情:
评论列表 (有 0 条评论,152人围观)

还没有评论,来说两句吧...

相关阅读