Java 需要比较没有秒的日期对象

Java 需要比较没有秒的日期对象,java,Java,我在数据库中取两个日期时间对象。我需要在没有秒的情况下进行比较 日期1值:2018-05-25T13:55:24.000+05:30 日期2值:2018-05-31T08:31:00.000+05:30 我需要检查日期1是否在日期2之后 if(Checks.checkNotNull(dateTime) && (partiallyInvalidateDate.isAfter(dateTime))){ code = null; } 但是我需要做上面的比较,没有第二部分。

我在数据库中取两个日期时间对象。我需要在没有秒的情况下进行比较

日期1值:2018-05-25T13:55:24.000+05:30 日期2值:2018-05-31T08:31:00.000+05:30

我需要检查日期1是否在日期2之后

if(Checks.checkNotNull(dateTime) && (partiallyInvalidateDate.isAfter(dateTime))){
    code = null;
  }

但是我需要做上面的比较,没有第二部分。需要一些专家的帮助。

请参考以下内容,希望您能从中找到解决方案

SQL Server 2008及更高版本: 强制转换(时间戳为日期)

SQL Server 2005及更早版本 DATEADD(天,DATEDIFF(天,0,时间戳),0)

SQLite 日期(时间戳)

神谕 TRUNC(时间戳)

MySQL
日期(时间戳)

请参考以下内容,希望您能找到解决方案

SQL Server 2008及更高版本: 强制转换(时间戳为日期)

SQL Server 2005及更早版本 DATEADD(天,DATEDIFF(天,0,时间戳),0)

SQLite 日期(时间戳)

神谕 TRUNC(时间戳)

MySQL
日期(时间戳)

假设您从
java.sql.ResultSet
获取的日期时间为
java.sql.timestamp
,您可以直接在这些对象上设置秒和纳秒,然后与
之后的
进行比较(尽管在
setSeconds
上会收到不推荐的警告)。使用模拟时间戳进行测试:

import java.sql.Timestamp;

public class TestTimestamp {

     public static void main(String []args){
        Timestamp ts1 = Timestamp.valueOf("2011-12-25 11:12:13");
        Timestamp ts2 = Timestamp.valueOf("2011-12-25 11:12:14");

        ts1.setSeconds(0);
        ts1.setNanos(0);
        ts2.setSeconds(0);
        ts2.setNanos(0);

        System.out.println(ts1);
        System.out.println(ts2);
        //should print false since they're now identical
        System.out.println(ts2.after(ts1));
    }
}
如果需要使用LocalDateTime,请执行以下操作:

import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;

public class Test{

     public static void main(String []args){
        Timestamp ts1 = Timestamp.valueOf("2011-12-25 11:12:13");
        Timestamp ts2 = Timestamp.valueOf("2011-12-25 11:12:14");

        LocalDateTime dt1 = ts1.toLocalDateTime().truncatedTo(ChronoUnit.MINUTES);
        LocalDateTime dt2 = ts2.toLocalDateTime().truncatedTo(ChronoUnit.MINUTES);

        System.out.println(dt1);
        System.out.println(dt2);
        //should print false since they're now identical
        System.out.println(dt2.isAfter(dt1));
     }
}

假设您从
java.sql.ResultSet
获取日期时间作为
java.sql.Timestamp
,您可以直接在这些对象上设置秒和纳秒,然后在
之后与
进行比较(尽管在
setSeconds
上会收到一条不推荐的警告)。使用模拟时间戳进行测试:

import java.sql.Timestamp;

public class TestTimestamp {

     public static void main(String []args){
        Timestamp ts1 = Timestamp.valueOf("2011-12-25 11:12:13");
        Timestamp ts2 = Timestamp.valueOf("2011-12-25 11:12:14");

        ts1.setSeconds(0);
        ts1.setNanos(0);
        ts2.setSeconds(0);
        ts2.setNanos(0);

        System.out.println(ts1);
        System.out.println(ts2);
        //should print false since they're now identical
        System.out.println(ts2.after(ts1));
    }
}
如果需要使用LocalDateTime,请执行以下操作:

import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.time.temporal.ChronoUnit;

public class Test{

     public static void main(String []args){
        Timestamp ts1 = Timestamp.valueOf("2011-12-25 11:12:13");
        Timestamp ts2 = Timestamp.valueOf("2011-12-25 11:12:14");

        LocalDateTime dt1 = ts1.toLocalDateTime().truncatedTo(ChronoUnit.MINUTES);
        LocalDateTime dt2 = ts2.toLocalDateTime().truncatedTo(ChronoUnit.MINUTES);

        System.out.println(dt1);
        System.out.println(dt2);
        //should print false since they're now identical
        System.out.println(dt2.isAfter(dt1));
     }
}

与使用
DateFormat
或smth相比,这并不是天生的。就像这样,但这是最简单的方法:

public static int compareUpToMinutes(long d1, long d2) {
    return Long.compare(d1 / 10000, d2 / 10000);
}
示例:

final ZonedDateTime date=ZonedDateTime.now();
最终函数milli=d->d.withSecond(10).toInstant().toEpochMilli();
比较时间分钟(毫秒应用(日期与秒(10)),毫秒应用(日期与秒(11));//0=>d1=d2
比较上分钟(毫秒应用(日期与分钟(10)),毫秒应用(日期与分钟(11));//-1=>d1d1>d2

与使用
DateFormat
或smth相比,这并不是天生的。就像这样,但这是最简单的方法:

public static int compareUpToMinutes(long d1, long d2) {
    return Long.compare(d1 / 10000, d2 / 10000);
}
示例:

final ZonedDateTime date=ZonedDateTime.now();
最终函数milli=d->d.withSecond(10).toInstant().toEpochMilli();
比较时间分钟(毫秒应用(日期与秒(10)),毫秒应用(日期与秒(11));//0=>d1=d2
比较上分钟(毫秒应用(日期与分钟(10)),毫秒应用(日期与分钟(11));//-1=>d1d1>d2
 > P>我认为最好:

这种情况下的输出:

在忽略秒或更小的时间之前启用

truncatedTo(ChronoUnit.MINUTES)
将秒和更小的单位(降至纳秒)设置为0。由于日期时间是不可变的,因此将返回修改后的副本。发件人:

截断返回带有字段的原始日期时间的副本 小于设置为零的指定单位。例如,截断 分钟单位将设置分钟的秒数和纳米秒数 字段设置为零

如果你使用的是 ZONDATEDATIMECT/<代码>,没问题,它也有一个<>代码> TunCeDeto to /Cuff>方法,效果与上面的代码< java >时间> < /C> >

我认为最好:

这种情况下的输出:

在忽略秒或更小的时间之前启用

truncatedTo(ChronoUnit.MINUTES)
将秒和更小的单位(降至纳秒)设置为0。由于日期时间是不可变的,因此将返回修改后的副本。发件人:

截断返回带有字段的原始日期时间的副本 小于设置为零的指定单位。例如,截断 分钟单位将设置分钟的秒数和纳米秒数 字段设置为零


如果您使用的是
ZonedDateTime
,没有问题,它也有一个
truncatedTo
方法,效果与java.time的更多类一样。time

使用
LocalDateTime
并使用
dateTime.withSeconds(0)。withNano(0)
将这些值归零。您还可以使用
trunctaedTo(ChronoUnit.MINUTES)
如果这更简单,您需要的数据库是什么use@AnushkaEkanayakesql server 2017。使用
LocalDateTime
并使用
dateTime.with秒(0)。with nano(0)
将这些值置零。您还可以使用
trunctaedTo(ChronoUnit.MINUTES)
如果这更简单,您需要的数据库是什么use@AnushkaEkanayakesql server 2017。