Java 如何从JSONObject获取日期对象

Java 如何从JSONObject获取日期对象,java,date,jsonobject,Java,Date,Jsonobject,我的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 birthD

我的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,我会这样做。当调试器到达Date birthDate=sdf.parse(dateStr)时;它只是跳过了这个


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

使用如下日期格式:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX");
以匹配输入字符串格式

有关详细信息,请参阅

比如这个

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欧洲中部时间


使用如下日期格式:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSX");
以匹配输入字符串格式

有关详细信息,请参阅

比如这个

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欧洲中部时间


那是因为你的日期格式与你得到的字符串不匹配。我跳过了这个。它“跳过”它的唯一方法是,如果你有一个没有任何异常处理的try/catch(即,空的catch块)。你应该确保你正在转储stacktrace并注意它所说的内容(假设它确实得到异常)。@Henry yeah我知道日期格式不匹配,但中间有一个T,末尾有一个Z,我该如何摆脱它们呢?你可以尝试这样的方式:“yyyy-MM-dd'T'HH:MM:ssZ”这是因为你的日期格式与你得到的字符串不匹配。我只是跳过了这个。它“跳过”它的唯一方法是,如果你有一个没有任何异常处理的try/catch(即,空的catch块)。你应该确保你正在转储stacktrace并注意它所说的内容(假设它确实得到异常)。@Henry yeah我知道日期格式不匹配,但中间有一个T,末尾有一个Z,我如何摆脱它们?你可以尝试这样的方式:“yyyy-MM-dd'HH:MM:ssZ”我得到错误java.text.ParseException:Unparseable date:“2014-01-01T21:13:00.000Z”(在偏移量23处)它表示E/AndroidRuntime(26444):原因:java.lang.IllegalArgumentException:未知模式字符“X”既然我在安卓设备上工作,它是否会有所不同?啊,你应该提到你在安卓上。它没有
X
格式字符。也许
z
有效,但我不确定。看,我很抱歉,我不知道android和本机java有什么不同,不管怎样,它是有效的!正如你所说,我必须做yyyy-MM-dd'HH:MM:ss.SSS'Z'我得到了错误java.text.ParseException:Unparseable date:“2014-01-01T21:13:00.000Z”(偏移量23处)它说E/AndroidRuntime(26444):原因是:java.lang.IllegalArgumentException:未知模式字符“X”,因为我在安卓设备上工作,它应该有所不同吗?啊,你应该提到你在安卓上。它没有
X
格式字符。也许
z
有效,但我不确定。看,我很抱歉,我不知道android和本机java有什么不同,不管怎样,它是有效的!正如你说的,我必须做yyyy-MM-dd'T'HH:MM:ss.SSS'Z'