比较JAVA中的NotesDateTime

时间:2014-08-21 18:04:49

标签: java date comparison xpages

笔记真的不喜欢空白(null)日期,并且让我没有悲伤的结局。因此,在本机Notes应用程序中,我为所有日期字段分配了值GMT 01/10/1970 0:0:0 AM

然后在时间显示日期,如果它等于我显示的GMT时间" - "作为多值领域的占位符。我想创建一个小的JAVA方法来比较传递给GM​​T日期的日期,如果相同的返回true则返回false。我觉得我的代码可以在下面说明,但现在我不确定如何将dt(转换为GMT)与GMT进行比较简单=似乎不起作用所以我怀疑我有某种比较冲突。任何正确方向的指针都会受到赞赏。我用Google搜索了这个,但找不到直接答案。

public static Boolean isBlankDate(Date dt){
        Boolean rtn = false;
        Session s = ExtLibUtil.getCurrentSession();
        try{
            Date GMT = s.createDateTime("01/01/1970 0:0:0 AM GMT").toJavaDate();
        }catch(NotesException e){
            System.out.println("Date Create Error " + e.toString());
            if (dt = GMT){
                rtn = true;
            }else{
                rtn = false;
            }
            return false;
        }
        //compare dt to GMT and if equal return true else false
        return rtn;
    }

4 个答案:

答案 0 :(得分:2)

在Java中,您可以通过firstDate.before(otherDate)或firstDate.after(otherDate)比较日期,它将返回一个布尔值

答案 1 :(得分:2)

您想要检查本机Notes数据字段是否包含01/01/1970 0:0:0 AM GMT您将其解释为空(空)数据值。我假设您从文档中读取数据值,使用.toJavaDate()将值转换为Java Date,然后想要使用您的方法isBlankDate(Date dt)测试它是否是01/01/1970 0:0:0 AM GMT

如果这是您想要实现的目标,那么您可以将方法简化为

public static boolean isBlankDate(Date dt) {
    return dt.getTime() == 0;
}

.getTime()返回 1970年1月1日,00:00:00 GMT由Date对象表示的毫秒数。

如果日期完全 01/01/1970 0:0:0 AM GMT,则返回0。所以,你唯一需要做的就是测试

dt.getTime() == 0

返回 true ,如果Date dt是01/01/1970 0:0:0 AM GMT并返回 false ,如果没有。

答案 2 :(得分:1)

如果您正在查看比较日期,则java.util.Date类中的isBefore / isAfter非常有用。 java.sql.Date允许您创建Date而不是DateTime。

java.util.Calendar是我通常在我自己的代码中用于日期操作/比较的东西。 Java API声明{@ 3}}已被弃用以支持它。您可以使用setTime传入java.util.Date。 java.util.Calendar也有locales和timezones。它也有方法之前和之后。

Joda是一个使用频繁的Java日期/时间API,但它并没有包含在Domino服务器中。

答案 3 :(得分:1)

"笔记真的不喜欢空白(空)日期,并且让我没有悲伤的结局。"

实际上并非如此。如果你同时调用.setAnyTime()和.setAnyDate(),你仍然可以保存为DateTime但没有任何特定值。