我从服务器收到了一个 JSON 数组。我获取一个日期作为时间戳字符串 - 例如,[{"date": "1418056895", ... }]
- 我需要以我们的日期格式解析它。我该怎么做呢?我试过了,但年份总是 1970。
注意:我的 JSON 格式是 UNIX 格式。
JSONObject feedObj = (JSONObject) feedArray.get(i);
FeedItem item = new FeedItem();
item.setTimeStamp(feedObj.getString("date"));
public void setTimeStamp(String timeStamp) {
this.timeStamp = timeStamp;
}
public String getTimeStamp() {
return timeStamp;
}
在另一个类中,我解析时间戳以显示它:
List<FeedItem> feedItems = ...;
FeedItem item = feedItems.get(position);
CharSequence timeAgo = DateUtils.getRelativeTimeSpanString(
Long.parseLong(item.getTimeStamp()),
System.currentTimeMillis(), DateUtils.SECOND_IN_MILLIS);
但是显示的日期始终是 1970 年。
使用诸如 1403375851930
之类的值,它似乎可以按预期工作(它显示当代日期)。
最佳答案
如果您正确解析 JSON,
feedObj.getString("date");
保存您的日期。您正在将日期读取为字符串。您必须将其转换为 long。
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
Long timestamp = Long.parseLong("1418056895"); //Long.parseLong(feedObj.getString("date"));
cal.setTimeInMillis(timestamp * 1000L);
DateFormat format = new SimpleDateFormat("MM/dd/yyyy"); // what ever format you need.
System.out.println(format.format(cal.getTime())); // this will be in MM/dd/yyyy
//item.setTimeStamp(format.format(cal.getTime()));
}
您还可以使用feedObj.getLong("date");直接获取长格式的日期,但这取决于您使用的JSON库。
关于java - 在 Java/Android 中解析 UNIX 日期中的 JSON,无需任何库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27363047/