我正在阅读的.json文件中有以下JSON条目。
有许多JSON条目,每个条目都保持相同的格式。最初的两个值指定日期和月份:
[["1","12","06:26","08:03","12:09","13:46","14:17","16:05","17:42"]
因此,最初的"1"
和"12"
将等同于1st of December
。
有人可以帮我写一个方法,只要读入JSON,设备就会使用设备日/月来检查应用程序界面上显示哪个JSON数组?
答案 0 :(得分:2)
我不是JSON的专家,但我知道几天和几个月。所以这里是如何根据您的设备检查JSON数组中的这两个值是否表示今天的日期:
MonthDay today = MonthDay.now(ZoneId.systemDefault());
try {
if (MonthDay.of(Integer.parseInt("12"), Integer.parseInt("1")).equals(today)) {
System.out.println("This is the array to display today");
}
} catch (NumberFormatException nfe) {
System.out.println("Day or month from array was not a number: " + nfe.getMessage());
}
我正在使用并推荐java.time
,现代Java日期和时间API。
ZoneId.systemDefault()
是我尝试获取设备的时区设置。但要注意,我只获得了JVM的时区设置,但并不总是一样。例如,JVM设置可能已被程序的其他部分或运行在同一JVM中的其他程序更改。
如何从每个JSON数组中获取这些字符串还取决于您用于解析JSON的库。
是的,您可以在Android上使用java.time
。它只需要至少Java 6 。
org.threeten.bp
导入日期和时间类。java.time
。java.time
。java.time
向Java 6和7的后端(JST-310的ThreeTen)。答案 1 :(得分:0)
首先,要检索当前日期和月份,我将使用以下代码:
Calendar instance = Calendar.getInstance();
currentMonth = instance.get(Calendar.MONTH);
currentDay = instance.get(Calendar.DAY);
int month=currentMonth+1;
在此之后,你需要通过创建一个json数组,然后一个json对象从json字符串中获取数据,并从字符串中过滤掉特别需要的字符串(日和月)。
JSONArray arr = new JSONArray(result);
JSONObject jObj = arr.getJSONObject(0);
String day = jObj.getString("Day");
String month = jObj.getString("Month");
现在,将所有日期都放在数组中。 然后,简单地将所有给定日期与当前日期进行比较。
问题是,你没有这样的前缀:
[{"Date":"2012-1-4T00:00:00","keywords":null, ... }]
需要这些来告诉从哪里提取字符串,所以你应该考虑更新你的JSON输出。