【问题标题】:how to get date object from a JSONObject如何从 JSONObject 获取日期对象
【发布时间】:2013-11-05 20:28:56
【问题描述】:

我的 JSON 对象看起来像

{"iso":"2014-01-01T21:13:00.000Z","__type":"Date"}

我需要从中获取日期作为日期对象。 我尝试过的-

String dateStr = JsonObject.getString("iso"); //output is 2014-01-01T21:13:00.000Z
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date birthDate = sdf.parse(dateStr);

但这不起作用,首先它提示我添加我所做的 try/catch。当调试器来到 DatebirthDate = sdf.parse(dateStr);它只是跳过这个。

如何从我的 JSON 对象中获取日期?

【问题讨论】:

  • 那是因为你的日期格式与你得到的字符串不匹配。
  • 我只是跳过这个。它“跳过”它的唯一方法是如果你有一个没有任何异常处理的 try/catch(即空的 catch 块。)你应该确保你正在转储堆栈跟踪并注意它所说的内容(假设它确实得到了一个异常)。
  • @Henry 是的,我知道日期格式不匹配,但是中间有一个 T,最后有一个 Z,我该如何摆脱它们?
  • 你可以试试这样的:“yyyy-MM-dd'T'HH:mm:ssZ”

标签: java date jsonobject


【解决方案1】:

使用这样的日期格式:

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

匹配输入的字符串格式。

详情请咨询documentation

例如这个

public static void main(String[] args) throws ParseException {
    String dateStr = "2014-01-01T21:13:00.000Z";
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX");
    Date birthDate = sdf.parse(dateStr);
    System.out.println(birthDate);
}

打印(实际输出取决于您的时区)

2014 年 1 月 1 日星期三 22:13:00 CET

【讨论】:

  • 我收到错误 java.text.ParseException: Unparseable date: "2014-01-01T21:13:00.000Z" (at offset 23)
  • 它说 E/AndroidRuntime(26444): Caused by: java.lang.IllegalArgumentException: Unknown pattern character 'X'
  • 我在安卓设备上工作,应该有所作为吗?
  • 啊,你应该提到你在Android上。它没有X 格式字符。也许z 有效,但我不确定。见developer.android.com/reference/java/text/SimpleDateFormat.html
  • 很抱歉,我不知道 android 和原生 java 有什么不同,反正它工作了!正如你所说,我必须做 yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
猜你喜欢
  • 2023-03-20
  • 1970-01-01
  • 2013-03-23
  • 1970-01-01
  • 2011-01-02
  • 1970-01-01
  • 2014-09-17
  • 1970-01-01
相关资源
最近更新 更多