【问题标题】:Unparseable Date in android [closed]android中无法解析的日期[关闭]
【发布时间】:2013-04-21 10:44:30
【问题描述】:
SimpleDateFormat df2 = new SimpleDateFormat("dd-MMM-yyyy");
String eDate ="04/26/2013";
Date eDDte;
try {
    eDDte = df2.parse(eDate);
    System.out.println("Date: " + eDDte);
} catch(ParseException e){
}

注意:我在第 5 行收到了 unparseable date error。我已经尝试了很多其他格式,但我不知道是什么问题。

【问题讨论】:

  • 你想达到什么目的?你想要format吗?
  • 格式dd-MMM-yyyy(用破折号-隔开)与实际日期不同 - 04/26/2013(用正斜杠隔开/)。
  • @udaykiran 我想要约会。
  • @Lion 我已经试过了。但同样的错误。
  • @SagarMaiyad : MMM 代表一个字符月份(开头三个字符),因此预计日期类似于26-Apr-2013See.

标签: java android


【解决方案1】:

首先将日期“04/26/2013”​​解析为“MM/dd/yyyy”,然后再解析。

    SimpleDateFormat df2 = new SimpleDateFormat("dd-MM-yyyy");
    SimpleDateFormat ef2 = new SimpleDateFormat("MM/dd/yyyy");
    String eDate = "04/26/2013";
    Date eDDte;
    try {
        Date nDate = ef2.parse(eDate);
        eDDte = df2.parse(df2.format(nDate));
        System.out.println("Date: " + eDDte);
        System.out.println("\nFormated Date:"+ df2.format(nDate));
    } catch (Exception e) {
    }

输出:

Date: Fri Apr 26 00:00:00 GMT+05:30 2013

Formated Date:26-04-2013

【讨论】:

  • 我想要第二种格式的日期。
  • @SagarMaiyad 第二种格式是什么意思?
  • 我想要像 26-04-2013 这样的日期数据类型的输出。
  • @SagarMaiyad 我更新了这个答案,检查一次。 ?
【解决方案2】:

您需要将格式更改为:“MM/dd/yyyy”以正确解析您的日期:“04/26/2013”​​

这个简单的测试打印:Date: 26-Apr-2013

public class DateFormatTest {
    public static void main(String... args) {
        SimpleDateFormat df2 = new SimpleDateFormat("MM/dd/yyyy");
        SimpleDateFormat df3 = new SimpleDateFormat("dd-MMM-yyyy");
        String eDate ="04/26/2013";
        Date eDDte;
        try {
            eDDte = df2.parse(eDate);
            System.out.println("Date: " + df3.format(eDDte));
        } catch(ParseException e){
            e.printStackTrace();
        }
    }
}

【讨论】:

  • @SagarMaiyad 可以,见上面的例子。
  • 是的,但它不是我想要的完美输出。
  • @SagarMaiyad 好的,现在我明白你需要什么了。更新了答案。
  • 我需要日期数据类型。
  • @SagarMaiyad 重构您的打印/显示代码以获得String 而不是Date。反正如果是Date,会被Date.toString()转换成String才能显示出来。
【解决方案3】:

试试这个

SimpleDateFormat df2 = new SimpleDateFormat("MM/dd/yyyy");
String eDate ="04/26/2013";
Date eDDte;
try {
    eDDte = df2.parse(eDate);
    System.out.println("Date: " + eDDte);
} catch(ParseException e){ }

【讨论】:

  • 我已经试过了。
【解决方案4】:

日期格式 dd-MMM-YYYY 不会解析 04/26/2013 的日期。 解析为日期格式,例如 26-APR-2013。

Here's a list of the common date patterns. 一般来说,你的日期模式是这样的:

  • 输入日期,前导零,后面有破折号
  • 输入三个字母的速记月份 (APR),后面加上一个破折号
  • 参加年会

为了让 SimpleDateFormat 解析它,它必须 完全 在该模式中。因此例外。

如果您不想要该模式,请探索更传统的 MM/dd/YYYY 日期模式,它将与您的日期字符串匹配。

【讨论】:

  • 很好,先生。这正是问题所在。 +1 先生。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-28
  • 1970-01-01
  • 1970-01-01
  • 2018-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多