java - 系统日期更改时如何执行某些操作?
问题描述
我的程序中有一个日期列表,每当我们启动应用程序(或系统日期更改时),应用程序都应该检查并删除过去的日期。
我已经尝试了以下代码,但它并没有真正起作用
delDateRef = FirebaseDatabase.getInstance().getReference();
Date today1 = new Date();
Date tomorrow = new Date(today1.getTime() + (1000 * 60 * 60 * 24));
for (int i=0; i<dates.size(); i++) {
if (dates.get(i).before(tomorrow)) {
Toast.makeText(RoomDetails.this, "Here", Toast.LENGTH_SHORT).show();
delDateRef = delDateRef.child("venues").child(roomNo).child("bookings").child(parentNodes.get(i));
delDateRef.removeValue();
singleBookingItemList.remove(i);
parentNodes.remove(i);
i--;
roomBookingsAdapter.notifyDataSetChanged();
}
}
如果今天的日期是 X,它应该保留。但是一旦今天的日期改变并且当前日期是 X+1,日期 X 应该从日期列表中删除。
解决方案
要从日期列表中删除所有过去/旧日期,请使用该方法
private ArrayList<Date> getActiveDates(ArrayList<Date> all_dates) {
//sort array for faster loop
Arrays.sort(all_dates.toArray());
Date today = new Date();
ArrayList<Date> today_and_future = all_dates;
for(Date curDate : all_dates){
if (curDate.compareTo(today) >= 0){
//we have gotten past all old dates
//break from loop
break;
}
//remove old date
today_and_future.remove(curDate);
}
return today_and_future;
}
从您的代码调用
delDateRef = FirebaseDatabase.getInstance().getReference();
for (Date activeDate : getActiveDates(dates)) {
...
//make use of activeDate object here
...
}
推荐阅读
- python - 在 Django 中面临 BASE_DIR 的问题
- artificial-intelligence - 增加国际象棋中最小最大值算法的平均深度?
- wpf - WPF - 刷新绑定到 ViewModel 的 ListView
- c - 字符串常量超过数组大小时没有错误
- python - 生成 6 位二进制整数的所有可能组合(每个数字可以是 0 或 1)
- opengl - 为什么不鼓励模板缓冲区使用 8 以外的位深度
- html - 使用图片元素作为容器而不是 div
- macos - 将应用程序嵌入 Safari 扩展包后出错
- c++ - 有没有办法从 C++ 源代码中禁用 -Wmultichar 警告?
- ios - Xcode:无权查看应用程序