我正在尝试解析dd-MM-yyyy中的日期,我的输入是01-01-2017它工作正常但是当我输入1-1-2017或1-1-17它也工作但我需要只有01-01-2017的格式,请任何人提供我解决方案
提前致谢
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
formatter.setLenient(false);
String dateInString = "1-01-2013";
try {
Date date = formatter.parse(dateInString);
System.out.println(date);
System.out.println(formatter.format(date));
} catch (ParseException e) {
e.printStackTrace();
}
答案 0 :(得分:0)
SimpleDateFormat
,即使使用lenient
到false
(这是更严格的模式)也不足以获得完全严格的解析。
使用{8}的DateTimeFormatter
,您可以实现它:
String dateInString = "1-01-2013";
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd-MM-yyyy");
try {
LocalDate date = LocalDate.parse(dateInString, dtf);
...
} catch (java.time.format.DateTimeParseException e) {
...
}
有关信息,ofPattern(String pattern)
默认使用ResolverStyle
java.time.format.ResolverStyle.SMART
值。
答案 1 :(得分:0)
除了davidxxx的解决方案,您还可以使用正则表达式来检查:)
Select c.CustomerName, pl.ProductName as 'Product Name', o.OrderDate as 'Order date',
Count([Address]) as 'No of Places', SUM(pl.Price * od.OrderQty) as 'Total Amount'
From Customer c
Inner Join [Order] o ON o.CustomerId = c.CustomerID
Inner Join OrderDetails od ON od.OrderId = o.OrderID
Inner Join ProductList pl ON pl.ProductID = od.ProductId
where c.CustomerID = (select cc.CustomerID from Customer cc where
cc.CustomerName = 'Mr.A')
但是,我不明白为什么你这么严格。