Java 需要比较没有秒的日期对象
我在数据库中取两个日期时间对象。我需要在没有秒的情况下进行比较 日期1值:2018-05-25T13:55:24.000+05:30 日期2值:2018-05-31T08:31:00.000+05:30 我需要检查日期1是否在日期2之后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; } 但是我需要做上面的比较,没有第二部分。
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。