如何判断现有java.util.Date是否与特定格式匹配
正在向我传递一个如何判断现有java.util.Date是否与特定格式匹配,java,date,formatting,Java,Date,Formatting,正在向我传递一个java.util.Date实例,需要确保它符合MM/dd/YYYY格式。如何执行这种验证(像Joda Time这样的SAN库)?我检查了SimpleDateFormat的API方法,但没有发现明显的赢家。提前谢谢 java.util.Date本身没有格式,只是一个内部长表示自1970年1月1日01:00以来的毫秒数java.util.Date封装了自纪元以来的毫秒数。它没有格式的概念。因此,日期的输入验证没有意义-这只适用于日期的字符串表示形式指定日期/时间解析是否宽松。通过宽
java.util.Date
实例,需要确保它符合MM/dd/YYYY
格式。如何执行这种验证(像Joda Time这样的SAN库)?我检查了SimpleDateFormat
的API方法,但没有发现明显的赢家。提前谢谢 java.util.Date本身没有格式,只是一个内部长表示自1970年1月1日01:00以来的毫秒数java.util.Date
封装了自纪元以来的毫秒数。它没有格式的概念。因此,日期
的输入验证没有意义-这只适用于日期
的字符串
表示形式指定日期/时间解析是否宽松。通过宽松的解析,解析器可以使用启发式来解释与该对象格式不完全匹配的输入。通过严格解析,输入必须与此对象的格式匹配
SimpleDateFormat ft = new SimpleDateFormat("MM/dd/YYYY");
ft.setLenient(false); // This will result in a ParseException when an invalid day and/or month
System.out.println(ft.format(ft.parse(s)));
看看这个,它会对你有用的
String s = "2013-05-07";
try {
Date date = new SimpleDateFormat("yyyy/MM/dd").parse(s);
System.out.println(date+" Format of date recognized");
} catch (ParseException e) {
e.printStackTrace();
System.out.println("unable to recognize the date format");
}
这段代码可以很好地工作,只有yyyy/MM/dd格式的字符串可以工作,rest all会抛出异常。如果我是你,我会使用java.util.Calendar
,java.util.Date
从JDK版本1.1开始就被弃用。@Abaabjava.util.Date
一点也不弃用,有些方法/构造函数是不推荐的,但类本身并没有被许多API/框架弃用。@AbaabDate
本身并没有被弃用。由于日历
,大多数方法都是,但类本身不是。