[英]Compare card expiry date in java. End of century?
我需要使用Calendar.after()
方法將當前日期與格式為MM/yy
的卡到期日期進行比較。 (我不能將 Java 8 與它的新 Date 處理類一起使用)。
為了匹配年份,我使用SimpleDateFormat.set2DigitYearStart(firstYearOfCurrentCentury)
。
所以這工作正常,但假設我的應用程序將在 2099 年使用,因此卡到期日期可能會變成MM/02
因此該值將大於當前的 2099 年,但應用程序仍會認為它是 2002 年。
如果我們不知道卡有效期和格式仍然是MM/yy
,處理這種情況的好做法是什么?
提前感謝您的回答。
如果你有卡創建日期這樣的數據,你也可以與之比較,認為你有約束卡到期日期>=卡創建日期。
我找到的解決方案不是比較日期,而是按字典順序比較字符串。 您只需要先比較年份,然后比較月份和比較器,其中 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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.