Incorrect date parsing using SimpleDateFormat, Java(使用SimpleDateFormat、Java进行的日期解析不正确)
问题描述
我需要使用日期模式"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"这样的字符串时,我会得到输出"Tsinghua Sep 29 00:00:00 EEST 2011",这很好。
当我发送了像"2011-0612"这样的错误字符串时,我收到了预期的错误。
当我试图传递一个仍然有两个"连字符"但位数错误的字符串时,问题就开始了。 示例:
输入字符串"2011-06-1211" 结果"EST 2014年9月23日00:00:00"。 输入字符串"2011-1106-12" 结果"2月12日星期一00:00:00东部时间2103"。我无法更改字符串日期的输入格式。
如何避免?
推荐答案
您是否尝试在SimpleDateFormat
上呼叫setLenient(false)
?
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...)
这篇关于使用SimpleDateFormat、Java进行的日期解析不正确的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:使用SimpleDateFormat、Java进行的日期解析不正确


基础教程推荐
- Java:带有char数组的println给出乱码 2022-01-01
- 降序排序:Java Map 2022-01-01
- 无法使用修饰符“public final"访问 java.util.Ha 2022-01-01
- 设置 bean 时出现 Nullpointerexception 2022-01-01
- “未找到匹配项"使用 matcher 的 group 方法时 2022-01-01
- FirebaseListAdapter 不推送聊天应用程序的单个项目 - Firebase-Ui 3.1 2022-01-01
- 如何使用 Java 创建 X509 证书? 2022-01-01
- 减少 JVM 暂停时间 >1 秒使用 UseConcMarkSweepGC 2022-01-01
- Java Keytool 导入证书后出错,"keytool error: java.io.FileNotFoundException &拒绝访问" 2022-01-01
- 在 Libgdx 中处理屏幕的正确方法 2022-01-01