日期字符串和转换日期之间的java不匹配
尝试使用一个可以验证输入日期字符串的函数。 例如日期字符串和转换日期之间的java不匹配,java,date,Java,Date,尝试使用一个可以验证输入日期字符串的函数。 例如201807192113表示2018/07/09 21:13 private static final SimpleDateFormat CASSANDRA_DATE_FORMAT = new SimpleDateFormat("YYYYMMddHHmm"); private static boolean isValidateDate(final String input) { try { CASSANDRA_DATE_
201807192113
表示2018/07/09 21:13
private static final SimpleDateFormat CASSANDRA_DATE_FORMAT = new SimpleDateFormat("YYYYMMddHHmm");
private static boolean isValidateDate(final String input) {
try {
CASSANDRA_DATE_FORMAT.setLenient(false);
final Date date = CASSANDRA_DATE_FORMAT.parse(input);
System.out.println(date.toString());
return true;
} catch (ParseException e) {
e.printStackTrace();
return false;
}
}
public static void main(String[] args) {
final boolean validateDate = FCXTablesValidation.isValidateDate("201807200101");
System.out.println(validateDate);
}
而输出为2017年12月31日美国东部时间21:13:00
true,表示另一个日期
此外,如果传入的
201807322113
不是有效日期(32不是一个月中的有效日期),仍然会得到相同的输出。您使用的是“YYYY”
作为年的格式<代码>Y是字母的模式。老实说,我不知道如何从输入字符串解析上述输出。但是如果使用模式字母y
,则宽松设置将抛出ParseException
。那么它是否打算使用模式字母Y
?您是说如果您将“201807200101”
传递给此方法,它将打印2017年12月31日美国东部时间21:13:00
?你确定吗?@LuCio-实际上Y
是“一年中的一周”,而不是“一年中的一周”。小写的w
是“一年中的一周”。仅供参考,像、java.text.SimpleDateFormat
这样非常麻烦的旧日期时间类现在被java 8和更高版本中内置的类所取代。请参阅、和的副本。具有您需要的确切代码段。