比较java中的卡到期日期。世纪末?

时间:2016-11-03 09:16:48

标签: java android date calendar simpledateformat

我需要使用MM/yy方法将当前日期与格式为Calendar.after()的卡片到期日期进行比较。 (我不能将Java 8与其新的Date处理类一起使用)。

为了匹配年份,我使用了SimpleDateFormat.set2DigitYearStart(firstYearOfCurrentCentury)

所以这个工作正常,但我们假设我的应用程序将在2099年使用,因此卡片有效期可能会变成MM/02所以此值将大于当前的2099年,但应用程序仍会认为它是2002。

如果我们不知道卡片有效期限且格式仍为MM/yy,那么处理这种情况的良好做法是什么?

提前感谢您的回答。

2 个答案:

答案 0 :(得分:2)

如果您有卡创建日期等数据,您也可以与之进行比较,认为您的约束卡到期日期> =卡创建日期。

答案 1 :(得分:0)

我找到了比较不是日期的解决方案,但是词典按字典顺序排列。你只需要比较年份,然后是几个月和绝对的比较者,其中0> 9。

public static boolean compareCardExpDateLexicographically(String dateToCompare) {
    SimpleDateFormat sdf = new SimpleDateFormat("yy/MM", Locale.US);
    Date date = new Date();
    String currentDate = sdf.format(date);
    String dateToComp = sdf.format((parseCardExpiryDate(dateToCompare)).getTime());

    Comparator<String> comp = new Comparator<String>() {
        @Override
        public int compare(String o1, String o2) {

            if (o1.compareTo(o2) == 9) return -1;
            else if (o1.compareTo(o2) == -9) return 1;
            else if (o1.compareTo(o2) > 0) return 1;
            else if (o1.compareTo(o2) == 0) return 0;
            else return -1;
        }
    };

    return comp.compare(dateToComp, currentDate) >= 0;
}