解析函数无法解析字符串并在 Java 中抛出错误
Parse function unable to parse string and throwing error in Java
无法解析以下日期。获取解析异常。请帮助查找错误:
String myDate = "2020–03–01 3:15 pm";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm aa",Locale.ENGLISH);
Date date = sdf.parse(myDate);
从外观上看,您的日期字符串包含 –
(破折号)而不是 -
(连字符)。
尝试在日期中使用连字符,看看它是否能够正确解析它。
奖金 ascii table 详情:
破折号 (-
):
.
连字符(-
):
您用来分隔年月日的分隔符似乎不正确。我建议您再次键入日期时间字符串,而不是从某处复制和粘贴它。我还建议您从过时的日期时间 API 切换到 modern。
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
String myDate = "2020-03-01 3:15 pm";
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.parseCaseInsensitive()
.appendPattern("u-M-d h:m a")
.toFormatter(Locale.ENGLISH);
LocalDateTime ldt = LocalDateTime.parse(myDate, formatter);
System.out.println(ldt);
}
}
输出:
2020-03-01T15:15
如果您仍想使用旧版日期时间API,您可以按如下方式进行:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class Main {
public static void main(String[] args) throws ParseException {
String myDate = "2020-03-01 3:15 pm";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd h:mm aa", Locale.ENGLISH);
Date date = sdf.parse(myDate);
System.out.println(date);
}
}
输出:
Sun Mar 01 15:15:00 GMT 2020
请注意,我使用了一个 h
来匹配您的日期时间字符串。
无法解析以下日期。获取解析异常。请帮助查找错误:
String myDate = "2020–03–01 3:15 pm";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm aa",Locale.ENGLISH);
Date date = sdf.parse(myDate);
从外观上看,您的日期字符串包含 –
(破折号)而不是 -
(连字符)。
尝试在日期中使用连字符,看看它是否能够正确解析它。
奖金 ascii table 详情:
破折号 (-
):
.
连字符(-
):
您用来分隔年月日的分隔符似乎不正确。我建议您再次键入日期时间字符串,而不是从某处复制和粘贴它。我还建议您从过时的日期时间 API 切换到 modern。
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
String myDate = "2020-03-01 3:15 pm";
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.parseCaseInsensitive()
.appendPattern("u-M-d h:m a")
.toFormatter(Locale.ENGLISH);
LocalDateTime ldt = LocalDateTime.parse(myDate, formatter);
System.out.println(ldt);
}
}
输出:
2020-03-01T15:15
如果您仍想使用旧版日期时间API,您可以按如下方式进行:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class Main {
public static void main(String[] args) throws ParseException {
String myDate = "2020-03-01 3:15 pm";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd h:mm aa", Locale.ENGLISH);
Date date = sdf.parse(myDate);
System.out.println(date);
}
}
输出:
Sun Mar 01 15:15:00 GMT 2020
请注意,我使用了一个 h
来匹配您的日期时间字符串。