解析 unix,UTC android
Parse unix, UTC android
我有 JSON,如下图所示,我在我的 android 应用程序中使用了它。我在解析 unix、UTC 格式的日出和日落时遇到问题。我的问题是如何仅显示本地小时和分钟?
这就是我尝试日出但错误的方法:sunrise.setText(json.getJSONObject("sys").getString("sunrise"));
感谢您的帮助!
我相信你有几个问题。
首先是如何将 Unix 时间戳转换为 Java 日期。
与 Unix 时间戳一样,Java 日期在内部存储为距特定时刻的长偏移量,称为 "epoch"。幸运的是,它们都使用相同的纪元。但是,Unix 时间戳具有更高的分辨率。
要从 Unix 时间戳中获取表示 Java 日期的 long,您需要将其乘以 1000。然后您可以使用结果来初始化 Java 日期。
这里最重要的是确保你的时间戳是长整数,而不是整数(或双精度或任何其他数字类型)。
所以,本质上:
long unixTimestamp = 1427607706;
long javaTimestamp = unixTimestamp * 1000L;
Date date = new Date(javaTimestamp);
接下来,您需要从 Json 中获取数值,而不是字符串,因此请使用 getLong 而不是 getString。
最后,您需要格式化日期。由于您只需要小时和分钟,您可以使用:
String sunrise = new SimpleDateFormat("hh:mm").format(date);
然后使用该值设置 TextView 的值。
我有 JSON,如下图所示,我在我的 android 应用程序中使用了它。我在解析 unix、UTC 格式的日出和日落时遇到问题。我的问题是如何仅显示本地小时和分钟?
这就是我尝试日出但错误的方法:sunrise.setText(json.getJSONObject("sys").getString("sunrise"));
感谢您的帮助!
我相信你有几个问题。
首先是如何将 Unix 时间戳转换为 Java 日期。
与 Unix 时间戳一样,Java 日期在内部存储为距特定时刻的长偏移量,称为 "epoch"。幸运的是,它们都使用相同的纪元。但是,Unix 时间戳具有更高的分辨率。
要从 Unix 时间戳中获取表示 Java 日期的 long,您需要将其乘以 1000。然后您可以使用结果来初始化 Java 日期。 这里最重要的是确保你的时间戳是长整数,而不是整数(或双精度或任何其他数字类型)。
所以,本质上:
long unixTimestamp = 1427607706;
long javaTimestamp = unixTimestamp * 1000L;
Date date = new Date(javaTimestamp);
接下来,您需要从 Json 中获取数值,而不是字符串,因此请使用 getLong 而不是 getString。
最后,您需要格式化日期。由于您只需要小时和分钟,您可以使用:
String sunrise = new SimpleDateFormat("hh:mm").format(date);
然后使用该值设置 TextView 的值。