0

我正在尝试使用 Java SimpleDateFormat 解析字符串。我的字符串是:

2013 年 2 月 23 日晚上 10 点 12 分 52 秒

作为 oracle Javadoc,我编写了以下模式:

MM/dd/yyyy KK:mm:ss a

恕我直言,我不确定 PM(aa),我也只尝试了“a”或“aaa”,但我总是得到 ParseException。有趣的是,当它在测试项目上作为 java 应用程序运行时,它可以工作:

当我在 android 项目中运行它时,它不起作用:

SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yyyy KK:mm:ss a");
    try {
        Date data = formatter.parse("2/23/2013 10:12:52 PM");
        System.out.println(data);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

有人可以帮我吗?

4

3 回答 3

0

在作为 java 应用程序在测试项目上运行它时,它可以工作:

确保您在您的 android 项目中导入了正确的库。

于 2013-02-23T23:25:12.457 回答
0

如果您的格式是“MM/...”,那么您的日期将以“02/23...”开头。

只用一个“M”试试。

于 2013-02-23T23:27:55.347 回答
0

我解决了。我没有说我的“2/23/2013 10:12:52 PM”字符串是由 Json 库组成的......也许它不是作为一个完整的字符串构建的,而是一个字符一个字符的,这可能是SimpleDateFormat 的问题。我尝试启动以下代码:

String data1 = "2/23/2013 10:12:52 PM"; //a string built by Json parser
String data2 = "2/23/2013 10:12:52 PM"; //created by hand as new String
System.out.println(data2.equals(data1));

它返回错误!

解决方案:

String data1 = "2/23/2013 10:12:52 PM"; //a string built by Json parser
String data2 = "2/23/2013 10:12:52 PM"; //created by hand as new String
StringBuffer sb = new StringBuffer();
sb.append(data1);
System.out.println(data2.equals(data1));

现在它返回真!

于 2013-02-25T20:16:04.037 回答