![](/img/trans.png)
[英]JXDatePicker using SimpleDateFormat to format dd.MM.yy to dd.MM.yyyy with current century
[英]Using Datetime with format dd.MM.yyyy parses strings with only two digit year?
我需要驗證字符串是否包含有效的日期輸入。 為此,我創建了一個方法
public static Date validateDateFormat(final String expectedDateFormat, final String dateToValdate) {
DateTimeFormatter formatter = DateTimeFormat.forPattern(expectedDateFormat);
DateTime dt = null;
try {
dt = formatter.parseDateTime(dateToValdate);
} catch (Exception e) {
log.error("cannot parse {0} to format {1}", dateToValdate, expectedDateFormat);
}
if (dt != null) {
return dt.toDate();
}
else {
return null;
}
}
使用這些值時,它不會按預期返回null。 字符串將被轉換為日期時間為0018-12-18T00:00:00.000 + 00:53:28的DateTime,是否可以更改此行為? 雖然格式不正確,但我會失敗。
這是我的測試
@Test
public void checkFormat6() {
String date = "18.12.18";
String expectedFormat = "dd.MM.yyyy";
assertNull(DateFormatChecker.validateDateFormat(expectedFormat, date));
}
我需要使用JDK 7和joda-time 2.10
Joda Time與y
, yy
或yyyy
不嚴格匹配。 甚至dMy
模式也會將18.12.18
解析為有效的日期時間。
您可以使用java.time
類(Java 7有一個java.time
來獲得更嚴格的模式解析,例如通過設置ResolverStyle.STRICT
:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(expectedFormat)
.withResolverStyle(ResolverStyle.STRICT);
上面的示例中的dd.MM.yyyy
將失敗,但仍會讓dMy
解析18.12.18
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.