如何通过Calendar对象检查空值,替代Date空值判断?
能否通过Calendar对象替代Date的空值判断?
我正在使用Calendar API进行日期比较,代码如下:
Date date = DateHelper.getDate(stringDate); // This returns a date object Calendar atPtmtCalendar = Calendar.getInstance(); if(date != null){ atPtmtCalendar.setTime(date); }
目前我通过判断变量date是否为空值来执行后续逻辑:
if(date != null){ Boolean isBefore = atPtmtCalendar.before(otherCalendarDate); }
请问是否可以通过atPtmtCalendar对象来检查空值,替代对date的空值判断?
回答:
- 直接通过
atPtmtCalendar本身没法判断它是否被设置过目标Date值,因为Calendar.getInstance()会默认初始化到当前系统时间——不管你有没有调用setTime(date),它都有一个有效的时间值,不存在“空”的状态。 - 要是想绕开对
date的空值判断,可以调整初始化逻辑:先把atPtmtCalendar设为null,仅当date不为空时才实例化并设置时间,后续就可以通过判断atPtmtCalendar是否为null来执行逻辑:
Date date = DateHelper.getDate(stringDate); Calendar atPtmtCalendar = null; if(date != null){ atPtmtCalendar = Calendar.getInstance(); atPtmtCalendar.setTime(date); } // 后续判断逻辑 if(atPtmtCalendar != null){ Boolean isBefore = atPtmtCalendar.before(otherCalendarDate); }
- 额外提一句:Java的
Calendar和Date都属于旧版日期API,设计存在不少缺陷,推荐改用Java 8及以上版本的java.time包(比如LocalDate、ZonedDateTime等类),这些API更简洁易用,也能避免很多旧API的问题。
内容的提问来源于stack exchange,提问作者daniel
相关产品推荐
相关产品推荐

