zoukankan      html  css  js  c++  java
  • 时间炸弹

    一:

    //如果超过此时间,则不能进入程序
    
    if (isExpiredLocal(2013, 7, 07)) {
    
    Toast.makeText(this, "EXPIRED!", Toast.LENGTH_SHORT).show();
    this.finish();(this为进入程序的Activity)
    return;
    }
    
     
    
    /**
    * 判断本机日期是否超过 指定的日期,
    * 
    * @param year
    * @param month
    * @param day
    * @return
    */
    public static boolean isExpiredLocal(int year, int month, int day) {
    Calendar endtime = Calendar.getInstance();
    endtime.set(year, month - 1, day);
    Calendar currenttime = Calendar.getInstance();
    return currenttime.after(endtime);
    }

    二:

    //正常
    private static final int TRIAL = 2;
    //即将过期
    private static final int EXPIRE_SOON= 1;
    //过期
    private static final int BOMB = 0;
    
    // 时间炸弹
            if (isExpiredLocal(2) == TRIAL) {
                // 正常时的操作
            } else if (isExpiredLocal(2) == EXPIRE_SOON) {
                // 即将过期时的操作
            } else if (isExpiredLocal(2) == BOMB) {
                // 过期时的操作
            }
    
    
    /**
         * 判断本机日期是否超过 指定的日期,
         * 
         * @return
         */
        public int isExpiredLocal(int months) {
            // 创建将要写入时间炸弹日期的文件路径
            String filePath = "/mnt/sdcard/Dreye";
            String dirPath = "/mnt/sdcard/Dreye/timeBomb.txt";
            // 如果文件不存在
            if (!new File(dirPath).exists()) {
                // 将时间炸弹的日期写入“timeBomb.txt”文件,参数2表示当前时期加上2个月之后的时间,即:两个月后
                String sdate = nDaysAftertoday(months);
                FileUtil.writeSd(filePath, dirPath, sdate);
            }
            // 从文件中读取时间炸弹的日期
            String timeBomb = FileUtil.readSd(dirPath);
            Date d = new Date();
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
            System.out.println("今天的日期:" + df.format(d));
            String currenttime = df.format(d);
            int betweenDays = nDaysBetweenTwoDate(currenttime, timeBomb);
            //即将到期
            if ((betweenDays < 10) & (betweenDays > 0)) {
                return EXPIRE_SOON;
            //到期
            } else if ((betweenDays == 0)|| (betweenDays < 0)) {
                return BOMB;
            }

    //正常
            return TRIAL;
        }
    
        /**
         * 获取n个月后的日期
         * 
         * @param nMonths
         * @return yyyy-MM-dd
         */
        public String nDaysAftertoday(int nMonths) {
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd", this
                    .getResources().getConfiguration().locale);
            Calendar rightNow = Calendar.getInstance();
            // rightNow.add(Calendar.DAY_OF_MONTH,-1);
            rightNow.add(Calendar.MONTH, +nMonths);
            return df.format(rightNow.getTime());
        }
    
        /**
         * 计算两个日期相隔的天数
         * @param firstString
         * @param secondString
         * @return 相隔的天数
         */
        public int nDaysBetweenTwoDate(String firstString, String secondString) {
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
            Date firstDate = null;
            Date secondDate = null;
            try {
                firstDate = df.parse(firstString);
                secondDate = df.parse(secondString);
            } catch (Exception e) {
                // 日期型字符串格式错误
            }
    
            int nDay = (int) ((secondDate.getTime() - firstDate.getTime()) / (24 * 60 * 60 * 1000));
            return nDay;
        }
  • 相关阅读:
    10 个雷人的注释,就怕你不敢用!
    Java 14 之模式匹配,非常赞的一个新特性!
    poj 3661 Running(区间dp)
    LightOJ
    hdu 5540 Secrete Master Plan(水)
    hdu 5584 LCM Walk(数学推导公式,规律)
    hdu 5583 Kingdom of Black and White(模拟,技巧)
    hdu 5578 Friendship of Frog(multiset的应用)
    hdu 5586 Sum(dp+技巧)
    hdu 5585 Numbers
  • 原文地址:https://www.cnblogs.com/Cherry-B/p/3844939.html
Copyright © 2011-2022 走看看