首页 > 解决方案 > 系统日期更改时如何执行某些操作?

问题描述

我的程序中有一个日期列表,每当我们启动应用程序(或系统日期更改时),应用程序都应该检查并删除过去的日期。

我已经尝试了以下代码,但它并没有真正起作用

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 应该从日期列表中删除。

标签: javaandroid

解决方案


要从日期列表中删除所有过去/旧日期,请使用该方法

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
          ...
    }

推荐阅读