日期解析出错了

时间:2015-11-20 13:48:38

标签: java date datetime

处理保存特定课程日期的应用程序,即每个创建课程的结束日期。

此服务接受MM / dd / yyyy格式的日期。

例如,

course = {
    "courseName": "My Course",
    "endDate": "01/10/2015"
}

哪个应该被解析为" 01/10 / 2015"即" 2015年1月10日"在服务中。

但是,有些情况下收到的日期格式错误,即dd / MM / yyyy

course = {
    "courseName": "My Course",
    "endDate": "13/01/2015"
}

被解析为" 01/01/2016"即" 2016年1月1日"。

上述解析使用

完成
String d = "13/01/2015";
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy");
Date date = format.parse(d);

我的问题是,是否有办法通过扭转错误解析的日期来恢复原始日期?

我尝试使用模式" dd / MM / yyyy"解析它,但我得到了#34; 01/01/2016"。

1 个答案:

答案 0 :(得分:3)

问题是,一旦你有了解析后的价值" 01/01/2016",你怎么知道原来的价值是否实际上是" 01/01 / 2016"或者你的错误" 13/01/2015"。你没有。

我可以建议的是,为了将来参考的是setLenient(false)SimpleDateFormat会在遇到类似的内容时抛出适当的ParseException

String d = "13/01/2015";
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy");
format.setLenient(false)
Date date = format.parse(d); // throws ParseException