java - 日期解析出错

标签 java date datetime

开发一个应用程序,保存特定类(class)的日期,即创建的每门类(class)的结束日期。

此服务接受 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”,即“01 Jan 2016”。

上面的解析是使用完成的

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

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

我尝试使用模式“dd/MM/yyyy”解析它,但得到“01/01/2016”。

最佳答案

问题是,一旦您获得了解析值“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

关于java - 日期解析出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33828324/

相关文章:

java - Ant wldeploy - 无法加载与 e=deployment-plan@http ://www. bea.com/ns/weblogic/deployment-plan 对应的 java 类型

java - arraylist 给出 "cannot be resolved"和 "cannot be resolved to a type"错误(eclipse)

java - 如何制作具有固定日期格式的 jtextfield?

python - 从实例方法更改日期时间字段的值

php - 在 PHP 中与 MySQL 日期时间分开获取年/月/日

java - 尝试使用启发式进行 A* 搜索,但未记录状态

templates - Scala模板中的Playframework 2.X和Date格式

mysql - MySQL中两个日期之间的差异

python - 如何在 Python 中正确合并重叠的日期时间范围

java - 使用 Java Kubernetes 客户端 API 部署 Pod 并为其分配节点