You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 18:57:43