java - 在 Java/Android 中解析 UNIX 日期中的 JSON,无需任何库

标签 java android json

我从服务器收到了一个 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/

相关文章:

java - android - 访问所有 Activity 的 SharedPreferences

java - 输出流的flush()运行时间

android - 如何在 Android 中对 HashMap<String,ArrayList> 进行排序?

Android - 在 sleep 中运行应用程序,每 N 秒轮询一次

javascript - 使用不以 "x/y"作为键的 JSON 数据

java - 确认安装了 Java 11 后,Ubuntu Java 应用程序找不到命令 javac

java - 在 JNI 中通过引用传递原始数据类型

android - 为 listview + Lazy List image 实现了 ViewHolder Pattern 但滚动仍然不流畅

javascript - 如何将json类型的数据附加到新的FormData

json - json-rpc 和 json-api 有什么区别?