如何比较Java中日期的时间部分

Posted

技术标签:

【中文标题】如何比较Java中日期的时间部分【英文标题】:how do I compare time part from Date in java 【发布时间】:2019-03-26 13:51:05 【问题描述】:

我需要比较 2 个日期/时间变量的时间部分,以查看时间是否介于 android 中的当前时间之间。我该怎么做?

    Boolean InBetweenTime(Date currentTime, Date StartTime, Date EndTime)

    Boolean result = false;
    Calendar calendar = Calendar.getInstance();
    if ((!currentTime.before(StartTime))&&(!currentTime.after(EndTime)))
        //between time
     else 
        //not inbetween time
    
    return result;

【问题讨论】:

显示您已经尝试过的内容 请更好地解释您的问题。 你之前没有尝试就问过question,得到了答案,现在你没有尝试就问下一个问题。这次请提供minimal reproducible example,并展示您自己的尝试!另外,我还为您提供了一个示例,说明如何比较您之前问题的时间...... 从***.com/questions/52929034/…到这个 阅读LocalDateTimeLocalDateLocalTime 的javadocs,也许还有一些例子,在www... 【参考方案1】:

如果您只需要比较时间,而忽略日期,那么您应该这样做,这样您的“日期”部分在所有三个变量中都是相等的。

Boolean InBetweenTime(Date currentTime, Date startTime, Date endTime)
    Boolean result = false;

    //calendar for currentTime
    Calendar currentCal = Calendar.getInstance();
    currentCal.setTime(currentTime);
    //calendar for startTime
    Calendar startCal = Calendar.getInstance();
    startCal.setTime(startTime);
    //calendar for endTime
    Calendar endCal = Calendar.getInstance();
    endCal.setTime(endTime);
    //set corresponding date fields of startTime and endTime to be equal t ocurrentTime, so you compare only time fields
    startCal.set(currentCal.get(Calendar.YEAR), currentCal.get(Calendar.MONTH), currentCal.get(Calendar.DAY_OF_MONTH));
    endCal.set(currentCal.get(Calendar.YEAR), currentCal.get(Calendar.MONTH), currentCal.get(Calendar.DAY_OF_MONTH));
    //return true if between, false otherwise
    return (!currentTime.before(startCal.getTime())) && (!currentTime.after(endCal.getTime()));

【讨论】:

以上是关于如何比较Java中日期的时间部分的主要内容,如果未能解决你的问题,请参考以下文章

如何仅比较 cosmos db 中的日期部分

如何在 C# 应用程序范围内更改仅日期部分将用于日期时间比较

仅比较日期部分而不比较 JavaScript 中的时间

在 T-SQL 中比较日期,忽略时间部分

如何在SQL Server中选择特定日期的行,忽略时间。

按日期部分比较实体框架中的SQL日期时间