Java 将字符串更改为日期
我试图改变字符串,看起来像这样:2016年7月4日 我尝试运行的代码是:Java 将字符串更改为日期,java,string,date,Java,String,Date,我试图改变字符串,看起来像这样:2016年7月4日 我尝试运行的代码是: Date d = null; String[] formats = {"d'st of' MMMMM yyyy","d'nd of' MMMMM yyyy","d'rd of' MMMMM yyyy","d'th of' MMMMM yyyy"}; for (String format : formats) { try {
Date d = null;
String[] formats = {"d'st of' MMMMM yyyy","d'nd of' MMMMM yyyy","d'rd of' MMMMM yyyy","d'th of' MMMMM yyyy"};
for (String format : formats) {
try {
d = new SimpleDateFormat(format).parse(date);
}
catch (Exception e){
System.out.println("Error in ConvertStringToDate s" + e);
}
}
System.out.print(d.toString());
我从控制台收到的错误:
Error in ConvertStringToDate sjava.text.ParseException: Unparseable date: "4th of July 2016"
Error in ConvertStringToDate sjava.text.ParseException: Unparseable date: "4th of July 2016"
Error in ConvertStringToDate sjava.text.ParseException: Unparseable date: "4th of July 2016"
Error in ConvertStringToDate sjava.text.ParseException: Unparseable date: "4th of July 2016"
Exception in thread "main" java.lang.NullPointerException
at MatchData.CollectMatch(MatchData.java:113)
at GetData.main(GetData.java:13)
首先感谢所有试图提供帮助的人:只要去掉使用String.replace的所有st of、nd of、rd of和th,并使用d MMMMM yyyy解析日期即可
您提供的代码不会在所有格式上循环-它会在第一次迭代中出现NullPointerException,因为缺少大括号。请提供您实际运行的代码的详细信息。接下来,您使用的是哪种语言环境?您尚未指定区域设置,因此将使用系统默认设置。如果您在创建SimpleDateFormat时指定Locale.ENGLISH,您可能会发现它已修复…@JonSkeet谢谢,我丢失了区域设置。添加它解决了问题。
new SimpleDateFormat(format).parse(
date.replace("st of", "")
.replace("nd of", "")
.replace("rd of", "")
.replace("th of", "")
);