dd-MM-yyyy格式的问题

时间:2017-07-02 07:01:24

标签: java

我正在尝试解析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();
        }

2 个答案:

答案 0 :(得分:0)

SimpleDateFormat,即使使用lenientfalse(这是更严格的模式)也不足以获得完全严格的解析。

使用{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')

但是,我不明白为什么你这么严格。