为什么日期不可解析

时间:2019-05-16 08:37:53

标签: java android

我正在尝试解析新的Date对象,但是我一直遇到以下错误。

W/System.err: java.text.ParseException: Unparseable date: "Thu May 16 09:28:39 GMT+01:00 2019"

我为dateFormat尝试了各种不同的模式,但是似乎没有任何效果。

这是错误所在。

c.setTime(dateFormat.parse(oldDate));

代码

  public static String addDay(int numberOfDays) {

    String oldDate = String.valueOf(new Date());

    SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy'T'HH:mm:ss", Locale.ENGLISH);
    Calendar c = Calendar.getInstance();

    try {
     c.setTime(dateFormat.parse(oldDate));
    } catch (ParseException e) {
        e.printStackTrace();
    }

    c.add(Calendar.DAY_OF_YEAR,numberOfDays);
    dateFormat=new SimpleDateFormat("dd-MM-yyyy'T'HH:mm:ss",  Locale.ENGLISH);
    Date newDate=new Date(c.getTimeInMillis());
    String resultDate=dateFormat.format(newDate);
    return resultDate;
}

3 个答案:

答案 0 :(得分:1)

尝试此功能

在您的问题中,您正在将Date转换为string

然后再次将String解析为Date

那是很长的路要走。您可以直接设置为 c.setTime(oldDate);

  public static String addDay(int numberOfDays) {
    Date oldDate = new Date();
    SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy'T'HH:mm:ss", Locale.ENGLISH);
    Calendar c = Calendar.getInstance();
    c.setTime(oldDate);
    c.add(Calendar.DAY_OF_YEAR,numberOfDays);
    dateFormat=new SimpleDateFormat("dd-MM-yyyy'T'HH:mm:ss",  Locale.ENGLISH);
    Date newDate=new Date(c.getTimeInMillis());
    String resultDate=dateFormat.format(newDate);
    return resultDate;
  }

答案 1 :(得分:0)

模式应类似于:

SimpleDateFormat sdf = new SimpleDateFormat("EE MMM dd HH:mm:ss z yyyy",
                                            Locale.ENGLISH);

然后要打印,您需要第二个SimpleDateFormat:

Date parsedDate = sdf.parse(date);

SimpleDateFormat print = new SimpleDateFormat("MMM d, yyyy HH:mm:ss");

System.out.println(print.format(parsedDate));

答案 2 :(得分:0)

您的模式是错误的。您应该使用EEE MMM dd HH:mm:ss z yyyy