gpt4 book ai didi

java - 强制 SimpleDateFormat 解析整个字符串

转载 作者:行者123 更新时间:2023-11-30 03:15:22 25 4
gpt4 key购买 nike

我有一个以下格式的日期字符串:“dd/MM/yyyy HH:mm:ss”。我想从中创建一个 Date 对象,并且我正在使用 SimpleDateFormat 类。我们的应用程序接受存储在 String 数组中的许多不同的日期格式。我们所做的是迭代该数组,对我们的 SimpleDateFormat 对象使用 applyPattern 并尝试解析给定的日期字符串。如果它抛出异常,我们会尝试数组中的下一个日期格式等。

但是我发现 SimpleDateFormat 类的 parse 方法不一定会尝试解析整个字符串。如果它成功地从字符串的一部分创建了一个 Date 对象,那么它就会返回它。这里的问题是我们给定的日期字符串包含日期和时间数据,但是在我们的第一次解析尝试中,SimpleDateFormat使用了更简单的模式:“dd/MM/yyyy”。由于在解析过程中它在给定的日期字符串中找到了匹配的日期,因此它会在那里停止并创建一个没有时间信息的 Date 对象。

有没有办法强制 SimpleDateFormat 解析给定的整个字符串?

String dateString = "01/01/2015 05:30:00";
Date date = null;
for (String format : Constants.DATE_FORMATS) {//String Array that contains many date format strings.
try {
simpleDateFormat.applyPattern(format);//First format applied is "dd/MM/yyyy".
date = simpleDateFormat.parse(dateString);
//No exception thrown it accepts the "dd/MM/yyyy" part of the dateString even though the string itself contains even more data.
}
catch (Exception e) {}
}
//Returns a date object with the time set to 00:00:00

最佳答案

您可以通过提供 ParsePosition 来检查已解析的输入量。 parse 方法更新位置来告诉您它解析了多少。

ParsePosition pos = new ParsePosition(0);
date = simpleDateFormat.parse(dateString, pos);

if (pos.getIndex() < dateString.length()) {
// did not parse all of dateString
}

关于java - 强制 SimpleDateFormat 解析整个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32777439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com