【问题标题】:ParseException: Unparseable date: "Wed Mar 30 00:00:00 GMT+05:30 2016" (at offset 4)ParseException:无法解析的日期:“Wed Mar 30 00:00:00 GMT+05:30 2016”(偏移量 4)
【发布时间】:2016-03-30 12:43:38
【问题描述】:

我正在尝试解析带有日期的字符串以将其转换为日期格式。字符串格式如下。

2016 年 3 月 30 日星期三 00:00:00 GMT+05:30

但是当我解析字符串时,我得到一个错误提示,

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(); }

【问题讨论】:

标签: android string-parsing android-time-square


【解决方案1】:

检查一次。 对我来说工作得很好

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);

【讨论】:

    【解决方案2】:

    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
    

    Trail: Date Time 了解有关现代日期时间 API 的更多信息。


    * 出于任何原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用 ThreeTen-Backport 将大部分 java.time 功能向后移植到 Java 6 和 7 . 如果您正在为一个 Android 项目工作,并且您的 Android API 级别仍然不符合 Java-8,请检查 Java 8+ APIs available through desugaringHow to use ThreeTenABP in Android Project

    【讨论】:

      【解决方案3】:

      2016 年 3 月 30 日星期三 00:00:00 GMT+05:30
      EEE MM dd kk:mm:ss zzzz yyyy

      您的数据与您的模式不匹配。要使其正常工作,请将您的模式更新为

      "EEE MMM dd kk:mm:ss zXXX yyyy"
      

      PS:here 是一个方便的工具来测试你的模式。

      【讨论】:

      • 感谢您的帮助。我不得不使用 HH 而不是 kk。也感谢您的工具。真的很感激。
      猜你喜欢
      • 2020-10-01
      • 2016-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多