现在有个疑问,我在一个页面上显示了所有的数据,时间到旬,现在想对数据做删除的操作,但只能对当前日期的本旬和下旬做删除,本旬以前的数据只能查询不能删除,请大家帮帮忙,我该怎么写这段代码啊? 
例如:现在是2009年10月27日是下旬,我能对这条数据做删除,也能对2009年11月上旬的数据做删除,但不能对10月中旬的数据做删除。

解决方案 »

  1.   

    Calendar1.after(Calendar2);判断时间1是否在时间2之后
    Calendar1.before(Calendar2);判断时间1是否在时间2之前
      

  2.   

    你看一下下面这个可以么?import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;
    import java.util.Date;public class Test {    public static void main(String[] args) throws ParseException {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date date = sdf.parse("2009-10-27 00:00:00");        
            TenDayScope tenDay = TenDayScope.getInstance();
            System.out.println(tenDay.contains(date));
        }
    }class TenDayScope {
        
        public final static int FIRST_TEN_DAY  = 0;
        public final static int SECOND_TEN_DAY = 1;
        public final static int THIRD_TEN_DAY  = 2;    
        
        private Calendar start;
        private Calendar end;
        
        private TenDayScope() {
            init();
        }
        
        public Calendar getStart() {
            return (Calendar)start.clone();
        }
        
        public Calendar getEnd() {
            return (Calendar)end.clone();
        }
        
        public static TenDayScope getInstance() {
            return new TenDayScope();
        }
        
        /**
         * 判断 Date 是否在本旬以及下旬之间
         * @param date
         * @return
         * 2009-10-27 下午01:42:07
         */
        public boolean contains(Date date) {
            if(date == null) {
                return false;
            }
            return contains(date.getTime());
        }
        
        /**
         * 判断 Calendar 是否在本旬以及下旬之间
         * @param date
         * @return
         * 2009-10-27 下午01:42:07
         */
        public boolean contains(Calendar calendar) {
            if(calendar == null) {
                return false;
            }
            return contains(calendar.getTimeInMillis());
        }
        
        /**
         * 判断 Unix 纪元毫秒数是否在本旬以及下旬之间
         * @param date
         * @return
         * 2009-10-27 下午01:42:07
         */
        public boolean contains(long millis) {
            return (millis >= start.getTimeInMillis()) && (millis < end.getTimeInMillis());
        }
        
        private void init() {
            {
                start = Calendar.getInstance();
                int t = getTenDay(start.get(Calendar.DATE));
                start.set(Calendar.DATE, getStartTenDay(t));
                clearHms(start);
            }
            
            {
                end = Calendar.getInstance();
                int t = getTenDay(end.get(Calendar.DATE));
                int endDay = getEndTenNextDay(t);
                if(t > FIRST_TEN_DAY) {
                    end.add(Calendar.MONTH, 1);
                }
                end.set(Calendar.DATE, getEndTenNextDay(endDay));
                clearHms(end);
            }
        }
        
        /**
         * 清空 Calendar 日以下的字段
         * @param c
         * 2009-10-27 下午01:41:39
         */
        private void clearHms(Calendar c) {
            c.set(Calendar.HOUR_OF_DAY, 0);
            c.set(Calendar.MINUTE, 0);
            c.set(Calendar.SECOND, 0);
            c.set(Calendar.MILLISECOND, 0);
        }
        
        /**
         * 根据当前旬次,获得该旬的第一天日
         * 
         * @param currentTenDay
         * @return
         * 2009-10-27 下午01:40:56
         */
        private int getStartTenDay(int currentTenDay) {
            return currentTenDay * 10 + 1;
        }
        
        /**
         * 根据当前旬次,获得下旬最后一天的后一天
         * @param currentTenDay
         * @return
         * 2009-10-27 下午01:41:18
         */
        private int getEndTenNextDay(int currentTenDay) {
            return (currentTenDay + 2) % 3 * 10 + 1;
        }
        
        /**
         * 根据日期获得旬次
         * @param day
         * 2009-10-27 下午01:40:28
         */
        private int getTenDay(int day) {
            int t = (day - 1) / 10;
            if(t > THIRD_TEN_DAY) {
                t = THIRD_TEN_DAY;
            }
            return t;
        }
        
        public String toString() {
            return String.format("start: %tF %<tT, end: %tF %<tT", start, end);
        }
    }