java.time.format.DateTimeParseException: 无法在索引 0 处解析文本
java.time.format.DateTimeParseException: Text could not be parsed at index 0
我有这个 groovy 代码,它给我一个错误,我不明白为什么:
import java.text.SimpleDateFormat
import java.time.DayOfWeek
import java.time.LocalDate
import java.time.LocalDateTime
import java.time.ZoneId
import java.time.format.DateTimeFormatter
import java.time.temporal.TemporalAdjusters
static String convertDateTimeString(String fromFormat, String toFormat, String dateString) {
DateTimeFormatter fromFormatter = DateTimeFormatter.ofPattern(fromFormat, Locale.GERMAN)
LocalDateTime localDateTime = LocalDateTime.parse(dateString, fromFormatter)
DateTimeFormatter toFormatter = DateTimeFormatter.ofPattern(toFormat, Locale.GERMAN)
localDateTime.format(toFormatter)
}
String date = convertDateTimeString( 'EEE, dd MMM yyyy HH:mm:ss z', 'yyyy', "Wed, 04 Feb 2015 10:12:34 UTC")
assert date == '2015'
错误是java.time.format.DateTimeParseException: Text 'Wed, 04 Feb 2015 10:12:34 UTC' could not be parsed at index 0
但我检查了 JavaDocs,我觉得一切都很好。
你能告诉我这里有什么问题吗?
问题是您将 Locale.GERMAN
的格式化程序设置为 parse/format,但将其交给 "Wed, 04 Feb 2015 10:12:34 UTC"
进行解析。 Wed
代表 wednesday,这是英语,而不是德语。
要解决问题,只需将Locale.GERMAN
替换为Locale.ENGLISH
即可。另一种解决方案是区域设置的参数。
我们需要在德语中使用较短的工作日 'So, Mo, Di, Mi, Do, Fr, Sa',而不是 "Wed"。
String date = convertDateTimeString( "EEE, dd MMM yyyy HH:mm:ss z", "yyyy", "Mi, 04 Feb
2015 10:12:34 UTC");
// 输出 2015
我有这个 groovy 代码,它给我一个错误,我不明白为什么:
import java.text.SimpleDateFormat
import java.time.DayOfWeek
import java.time.LocalDate
import java.time.LocalDateTime
import java.time.ZoneId
import java.time.format.DateTimeFormatter
import java.time.temporal.TemporalAdjusters
static String convertDateTimeString(String fromFormat, String toFormat, String dateString) {
DateTimeFormatter fromFormatter = DateTimeFormatter.ofPattern(fromFormat, Locale.GERMAN)
LocalDateTime localDateTime = LocalDateTime.parse(dateString, fromFormatter)
DateTimeFormatter toFormatter = DateTimeFormatter.ofPattern(toFormat, Locale.GERMAN)
localDateTime.format(toFormatter)
}
String date = convertDateTimeString( 'EEE, dd MMM yyyy HH:mm:ss z', 'yyyy', "Wed, 04 Feb 2015 10:12:34 UTC")
assert date == '2015'
错误是java.time.format.DateTimeParseException: Text 'Wed, 04 Feb 2015 10:12:34 UTC' could not be parsed at index 0
但我检查了 JavaDocs,我觉得一切都很好。
你能告诉我这里有什么问题吗?
问题是您将 Locale.GERMAN
的格式化程序设置为 parse/format,但将其交给 "Wed, 04 Feb 2015 10:12:34 UTC"
进行解析。 Wed
代表 wednesday,这是英语,而不是德语。
要解决问题,只需将Locale.GERMAN
替换为Locale.ENGLISH
即可。另一种解决方案是区域设置的参数。
我们需要在德语中使用较短的工作日 'So, Mo, Di, Mi, Do, Fr, Sa',而不是 "Wed"。
String date = convertDateTimeString( "EEE, dd MMM yyyy HH:mm:ss z", "yyyy", "Mi, 04 Feb
2015 10:12:34 UTC");
// 输出 2015