java - 如何在android中查找json日期列表是否一个月
问题描述
抱歉我的英语不好,我有来自 json 的日期列表
{
"data": [
{
"lead_id": "1763",
"name": "Gaurav Kumar",
"date": "16-02-2020",
"time": "10:00 To 11:00 AM",
},
{
"lead_id": "1759",
"name": "Test",
"date": "04-02-2020",
"time": "10:00 To 11:00 AM",
},
{
"lead_id": "1751",
"name": "kavita sharma",
"date": "08-02-2020",
"time": "10:00 To 11:00 AM",
},
{
"lead_id": "1751",
"name": "kavita sharma",
"date": "09-02-2020",
"time": "10:00 To 11:00 AM",
}
]
}
下面的代码帮助我找到当前日期
Calendar calendar = Calendar.getInstance();
Date today = calendar.getTime();
@SuppressLint("SimpleDateFormat")
DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
todayAsString = dateFormat.format(today);
System.out.println(todayAsString);
但我想知道如何检查日期列表是否为同一月份。
//这是我用来检查当前日期的代码,但我想检查所有日期是否都在同一个月份。请让我知道我该怎么做
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://delhidailyservice.com/api/")
.addConverterFactory(GsonConverterFactory.create())
.build();
APIService request = retrofit.create(APIService.class);
Call<LeadData> call = request.leadData(prefConfig.readLoginId());
call.enqueue(new Callback<LeadData>() {
@Override
public void onResponse(Call<LeadData> call, Response<LeadData> response) {
/* new Handler().postDelayed(new Runnable() {
public void run() {
// if (isAdded()) {
pDialog.dismiss();
// }
}
}, 5000);*/
pDialog.dismiss();
LeadData allEvent = response.body();
allEventData = (List<Leads>) allEvent.getData();
// Log.d("Error", ""+allEventData.size());
allEventDatanew.clear();
for (int i = 0; i < allEventData.size(); i++) {
if (todayAsString.equalsIgnoreCase(allEventData.get(i).getDate())) {
Leads allevent = new Leads();
String service = allEventData.get(i).getService();
String date = allEventData.get(i).getDate();
String name = allEventData.get(i).getName();
String time = allEventData.get(i).getTime();
String city = allEventData.get(i).getCity();
String status = allEventData.get(i).getStatus();
String credit = allEventData.get(i).getCredit();
String address = allEventData.get(i).getAddress();
String id = allEventData.get(i).getLeadId();
try {
//String details = allEventData.get(i).getDetail();
//abcd = Html.fromHtml(details).toString();
// tv_detail.setText(abcd);
} catch (Exception e) {
e.printStackTrace();
}
allevent.setService(service);
allevent.setDate(date);
allevent.setName(name);
allevent.setTime(time);
allevent.setCity(address + " , " + city);
allevent.setStatus(status);
allevent.setCredit(credit);
allevent.setLeadId(id);
allEventDatanew.add(allevent);
}
}
// Log.d("Error1", ""+allEventDatanew.size());
individualDataAdapter = new LeadAdapter(allEventDatanew, getContext());
recyclerViewIndividualEvent.setAdapter(individualDataAdapter);
individualDataAdapter.notifyDataSetChanged();
解决方案
java.time 和 ThreeTenABP
DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("dd-MM-uuuu");
List<Leads> allEventData = Arrays.asList(new Leads("16-02-2020"),
new Leads("04-02-2020"), new Leads("08-02-2020"),
new Leads("09-02-2020"));
if (allEventData.isEmpty()) {
System.out.println("No data");
} else {
YearMonth month = YearMonth.parse(allEventData.get(0).getDate(), dateFormatter);
boolean otherMonthFound = false;
for (Leads lead : allEventData) {
if (! YearMonth.parse(lead.getDate(), dateFormatter).equals(month)) {
otherMonthFound = true;
break;
}
}
if (otherMonthFound) {
System.out.println("They are not all in the same month");
} else {
System.out.println("They are all in the same month " + month);
}
}
此片段的输出是:
他们都在同一个月 2020-02
我从我使用的类中省略了其他字段,Leads
因为它们对解决方案没有任何影响。
问题:java.time 不需要 Android API 级别 26 吗?
java.time 在较旧和较新的 Android 设备上都能很好地工作。它只需要至少Java 6。
- 在 Java 8 及更高版本以及更新的 Android 设备(从 API 级别 26 开始)中,现代 API 是内置的。
- 在非 Android Java 6 和 7 中获得 ThreeTen Backport,现代类的后向端口(ThreeTen 用于 JSR 310;请参阅底部的链接)。
- 在(较旧的)Android 上使用 ThreeTen Backport 的 Android 版本。它被称为 ThreeTenABP。并确保从
org.threeten.bp
子包中导入日期和时间类。
链接
- Oracle 教程:日期时间解释如何使用 java.time。
- Java 规范请求 (JSR) 310,
java.time
第一次描述的地方。 - ThreeTen Backport 项目,
java.time
Java 6 和 7 的反向移植(ThreeTen for JSR-310)。 - ThreeTenABP , ThreeTen Backport 的 Android 版
- 问题:如何在Android项目中使用ThreeTenABP,有非常详尽的解释。
推荐阅读
- netsuite - 地址中包含州的 NetSuite 国家/地区
- angular - angular 9 + ivy ng build --prod 在 CI (github) 中因不兼容而失败,但在 windows + wsl ubuntu 上以完全相同的版本本地工作?
- c - 使用 CMake 为 libclang 项目 (LLVM) 构建动态/共享库
- html - 使用 :checked in css 更改背景颜色
- reactjs - 反应和反应表
- sql - 使用宏变量在proc sql(SAS)中进行条件处理
- javascript - 从我的组件更新服务组件数组值
- botframework - 具有 Bot 框架技能示例的自适应对话
- javascript - 向 v-for 中显示的数组添加新元素时,Vue.js 样式不会改变
- php - 如何在子域中正确路由,一个 laravel auth 应用程序