【问题标题】:Exception on Date parsing android [duplicate]日期解析android的异常[重复]
【发布时间】:2018-02-09 11:02:14
【问题描述】:

我正在使用一个函数来取出给定日期和当前日期之间的差异。在所有地方,该函数都可以正常工作,但在某个地方,它抛出了 unparseable date 异常。

下面是我使用的函数:

public boolean timeDiff24hrs(String alarmTime) {

    SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy'T'HH:mm:ss");
    sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
    Date date = new Date();
    String s = sdf.format(date);
    String alarmDateStr="";
    try {
        Date alarmDate=sdf.parse(alarmTime);
        alarmDateStr=sdf.format(alarmDate);
    } catch (ParseException e) {
        e.printStackTrace();
    }

    int diff = diffOf2Days(alarmDateStr, s);

    if (diff > 1439) {
        return true;
    }
    return false;
}

在这里,我在尝试执行 try 块时遇到异常。

我传递给函数的alarmDate 是: 1/31/2018 8:58:12 AM +00:00

谁能解释一下。

【问题讨论】:

  • 对于日期“1/31/2018 8:58:12 AM +00:0”,您的日期格式不正确。
  • 该日期不适用于您使用的格式
  • unparseable 在通过日期不是有效格式时出现。
  • 将您的日期格式更改为适当的格式
  • 顺便考虑扔掉长期过时且臭名昭著的麻烦SimpleDateFormat和朋友,并将ThreeTenABP添加到您的Android项目中,以便使用java.time,现代Java日期和时间API .使用起来感觉好多了。

标签: android android-activity simpledateformat date-parsing android-date


【解决方案1】:

您使用的日期格式MM/dd/yyyy'T'HH:mm:ss 不正确1/31/2018 8:58:12 AM +00:00 并返回与预期不同的值。

SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy'T'HH:mm:ss");

返回 1/31/2018T8:58:12

而你正试图从下方通过

1/31/2018 8:58:12 AM +00:00

【讨论】:

  • 对“有人可以解释一下”的非常直接的回答。 :-)
猜你喜欢
  • 1970-01-01
  • 2013-06-03
  • 1970-01-01
  • 1970-01-01
  • 2019-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多