ParseException:无法解析的日期:"Wed Mar 30 00:00:00 GMT+05:30 2016"(在偏移量 4 处)
ParseException: Unparseable date: "Wed Mar 30 00:00:00 GMT+05:30 2016" (at offset 4)
我正在尝试解析带有日期的字符串,以将其转换为日期格式。字符串采用以下格式。
3 月 30 日,星期三 00:00:00 GMT+05:30 2016
但是当我解析字符串时,我收到一条错误消息,
java.text.ParseException:无法解析的日期:"Wed Mar 30 00:00:00 GMT+05:30 2016"(在偏移量 4 处)
下面是我的代码的一部分。我该如何避免这个错误?任何帮助,将不胜感激。
SimpleDateFormat sdf3 = new SimpleDateFormat("EEE MM dd kk:mm:ss zzzz yyyy",Locale.ENGLISH);
for(int i=0 ; i <jArr.length() ; i++){
String tempDate = jArr.get(i).toString();
dateList.add(tempDate);
}
try{
Date d1 = sdf3.parse(dateList.get(0));
}catch (Exception e){ e.printStackTrace(); }
Wed Mar 30 00:00:00 GMT+05:30 2016
EEE MM dd kk:mm:ss zzzz yyyy
您的数据与您的模式不符。要使其正常工作,请将您的模式更新为
"EEE MMM dd kk:mm:ss zXXX yyyy"
PS: here 是测试模式的便捷工具。
检查一次。
对我来说工作正常
SimpleDateFormat sdf3 = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH);
Date d1 = null;
try{
d1 = sdf3.parse("Wed Mar 30 00:00:00 GMT+05:30 2016");
}catch (Exception e){ e.printStackTrace(); }
System.out.println("check..." + d1);
java.time
java.util
日期时间 API 及其格式 API、SimpleDateFormat
已过时且容易出错。建议完全停止使用它们并切换到 modern date-time API* .
使用现代日期时间 API:
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
String strDateTime = "Wed Mar 30 00:00:00 GMT+05:30 2016";
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("E MMM d H:m:s O u", Locale.ENGLISH);
OffsetDateTime odt = OffsetDateTime.parse(strDateTime, dtf);
System.out.println(odt);
}
}
输出:
2016-03-30T00:00+05:30
了解有关现代日期时间 API 的更多信息
* 无论出于何种原因,如果您必须坚持Java 6 或Java 7,您可以使用ThreeTen-Backport which backports most of the java.time functionality to Java 6 & 7. If you are working for an Android project and your Android API level is still not compliant with Java-8, check Java 8+ APIs available through desugaring and 。
我正在尝试解析带有日期的字符串,以将其转换为日期格式。字符串采用以下格式。
3 月 30 日,星期三 00:00:00 GMT+05:30 2016
但是当我解析字符串时,我收到一条错误消息,
java.text.ParseException:无法解析的日期:"Wed Mar 30 00:00:00 GMT+05:30 2016"(在偏移量 4 处)
下面是我的代码的一部分。我该如何避免这个错误?任何帮助,将不胜感激。
SimpleDateFormat sdf3 = new SimpleDateFormat("EEE MM dd kk:mm:ss zzzz yyyy",Locale.ENGLISH);
for(int i=0 ; i <jArr.length() ; i++){
String tempDate = jArr.get(i).toString();
dateList.add(tempDate);
}
try{
Date d1 = sdf3.parse(dateList.get(0));
}catch (Exception e){ e.printStackTrace(); }
Wed Mar 30 00:00:00 GMT+05:30 2016
EEE MM dd kk:mm:ss zzzz yyyy
您的数据与您的模式不符。要使其正常工作,请将您的模式更新为
"EEE MMM dd kk:mm:ss zXXX yyyy"
PS: here 是测试模式的便捷工具。
检查一次。 对我来说工作正常
SimpleDateFormat sdf3 = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ENGLISH);
Date d1 = null;
try{
d1 = sdf3.parse("Wed Mar 30 00:00:00 GMT+05:30 2016");
}catch (Exception e){ e.printStackTrace(); }
System.out.println("check..." + d1);
java.time
java.util
日期时间 API 及其格式 API、SimpleDateFormat
已过时且容易出错。建议完全停止使用它们并切换到 modern date-time API* .
使用现代日期时间 API:
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
String strDateTime = "Wed Mar 30 00:00:00 GMT+05:30 2016";
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("E MMM d H:m:s O u", Locale.ENGLISH);
OffsetDateTime odt = OffsetDateTime.parse(strDateTime, dtf);
System.out.println(odt);
}
}
输出:
2016-03-30T00:00+05:30
了解有关现代日期时间 API 的更多信息
* 无论出于何种原因,如果您必须坚持Java 6 或Java 7,您可以使用ThreeTen-Backport which backports most of the java.time functionality to Java 6 & 7. If you are working for an Android project and your Android API level is still not compliant with Java-8, check Java 8+ APIs available through desugaring and