从JSON对象中获取日期的方法

33

我有一个 JSON 对象,其中有一个字段是出生日期:

JSONObject obj = new JSONObject(response);
User user = new User();
user.setuserID(obj.getString("userID"));
user.setisMale(obj.getBoolean("isMale"));
user.setEmail(obj.getString("email"));
// user.setBirthdate(obj.getDate("birthdate"));
user.setLastName(obj.getString("lastName"));
user.setFirstName(obj.getString("firstName"));

但是JSONObject中不存在getDate()方法。
我该如何在我的User对象中设置出生日期?


1
你的日期在JSON响应中是如何表示的?我猜是一个字符串吧?请展示JSON。 - Lukas Knuth
就像这样:"birthdate":"2012-08-01"。 - user2144555
2个回答

51

您可以像下面这样操作:

String dateStr = obj.getString("birthdate");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date birthDate = sdf.parse(dateStr);
//then
user.setBirthdate(birthDate);

希望能帮到你 :)


它有结果了,但是它打印的是 Wed Aug 01 00:00:00 BST 2012,即使我的格式是 SimpleDateFormat("yyyy-MM-dd") - user2144555
你的结果是正常的,因为格式模式是"yyyy-MM-dd",请使用"yyyy-MM-dd HH:mm:ss"来获取小时、分钟和秒。 - Hunter Zhao
@Bob.Z 我得到的日期字符串是这样的 "2015-12-25 00:00:00",我想要格式化成这样 "2015-12-25 00:00:00 UTC"。我应该在 SimpleDateFormat("?") 中写哪种格式? - hasnain_ahmad
1
我更喜欢使用一行代码:new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").parse(dateStr) - Pablo Pazos

4

通常情况下,日期可以表示成毫秒数或格式化后的字符串。因此,根据你的json数据,你可以使用new Date(json.getLong(milliseconds))或者如果日期是字符串类型,则直接使用。

String birthdate = json.getString(date);//"2013-03-26"
DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 

它有结果了,但是它打印的是 Wed Aug 01 00:00:00 BST 2012,即使我的格式是 SimpleDateFormat("yyyy-MM-dd") - user2144555

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接