使用Java SimpleDateFormat进行错误的日期解析

安德鲁副总裁:

我需要使用日期模式“ yyyy-MM-dd”从输入字符串中解析日期,如果日期将以任何其他格式出现,则会引发错误。

这是我解析日期的代码:

private void validateDate() throws MyException {
  Date parsedDate;
  String DATE_FORMAT = "yyyy-MM-dd";
  try{
    parsedDate = new SimpleDateFormat(DATE_FORMAT).parse(getMyDate());
    System.out.println(parsedDate);
  } catch (ParseException e) {
    throw new MyException(“Error occurred while processing date:” + getMyDate());
  }

}

当我在myDate中输入类似“ 2011-06-12”的字符串时,我将获得输出“ Thu Sep 29 00:00:00 EEST 2011”,这很好。

当我发送不正确的字符串(如“ 2011-0612”)时,出现了预期的错误。

当我尝试传递仍然有两个“连字符”的字符串时,问题就开始了,但是数字位数是错误的。例:

输入字符串“ 2011-06-1211”结果“ 2014年9月23日星期二00:00:00”。

输入字符串“ 2011-1106-12”结果“周一2月12日00:00:00 EET 2103”。

我不能更改字符串日期的输入格式。

我该如何避免呢?

乔恩·斯基特(Jon Skeet):

您是否尝试拨打setLenient(false)您的电话SimpleDateFormat

import java.util.*;
import java.text.*;

public class Test {

    public static void main(String[] args) throws Exception {
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        format.setLenient(false);
        Date date = format.parse("2011-06-1211"); // Throws...
        System.out.println(date);
    }
}

请注意,我还建议您设置的时区和语言环境SimpleDateFormat(或者,使用Joda Time代替...)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Java的无法解析日期的SimpleDateFormat

SimpleDateFormat的解析字符串的日期是错误

为什么使用SimpleDateFormat从字符串中解析日期时得到错误的结果?(Java)

SimpleDateFormat解析错误的日期

使用新的Java 8 DateTimeFormatter进行严格的日期解析

如何使用SimpleDateFormat解析多种格式的日期

使用SimpleDateFormat在Java中进行日期解析

使用SimpleDateFormat.parse()解析日期时出现NumberFormatException

为什么SimpleDateFormat解析错误的日期?

为什么在使用SimpleDateFormat格式化日期然后解析日期时出现ParseException?

使用SimpleDateFormat的日期解析不一致

Java SimpleDateFormat解析后的时区错误

为什么Java的SimpleDateFormat会对此进行解析

SimpleDateFormat ParseException:无法解析的日期错误

java-使用SimpleDateFormat时无法解析的日期

使用毫秒对dateFormat进行SimpleDateFormat解析的问题

Java / Kotlin:为什么Jackson解析日期与SimpleDateFormat不同?

使用AM / PM的SimpleDateFormat解析错误

如何使用SimpleDateFormat仅用月份和年份解析日期

使用SimpleDateFormat无法解析的日期

使用SimpleDateFormat解析svn log -xml日期输出

Java simpledateformat无法解析的日期,即使格式似乎正确

使用SimpleDateFormat.java解析时区

SimpleDateFormat java.text.ParseException:无法解析的日期

使用 SimpleDateFormat(string,locale) 解析法语语言环境的错误

无法使用 SimpleDateFormat 解析字符串日期

使用 Java8 LocalDateTime Iso 日期格式解析错误

使用 SimpleDateFormat Android 的不可解析日期

使用 Notepad++ 对 Java 代码进行正则表达式转换 - 日期 .format 到 SimpleDateFormat