[英]how to compare date without time using calendar in java?
我只想比較兩個日期類型的日期而不是時間。
日期 1 = 2022.10.10 16:30:40 日期 2 = 2022.10.10 13:30:40
這些日期是相同的日期,所以我想返回 true。
下面是我的代碼。 有干凈的代碼嗎?
public Boolean a0160(HashMap<String, Object> params){
Date accessRecord;
Date now = new Date();
accessRecord = userMapper.a0170(params);
Calendar calAccessRecord = Calendar.getInstance();
Calendar calOneHourBefore = Calendar.getInstance();
calAccessRecord.setTime(accessRecord);
calOneHourBefore.setTime(now);
calOneHourBefore.add(Calendar.HOUR, -1);
int calOneHourBeforeYear = calOneHourBefore.get(Calendar.YEAR);
int calOneHourBeforeMonth = calOneHourBefore.get(Calendar.MONTH);
int calOneHourBeforeDate = calOneHourBefore.get(Calendar.DATE);
int calAccessRecordYear = calAccessRecord.get(Calendar.YEAR);
int calAccessRecordMonth = calAccessRecord.get(Calendar.MONTH);
int calAccessRecordDate = calAccessRecord.get(Calendar.DATE);
if(calOneHourBeforeYear == calAccessRecordYear && calAccessRecordMonth == calOneHourBeforeMonth && calAccessRecordDate == calOneHourBeforeDate){
return true;
} else {
return false;
}
}
myJavaUtilDate
.toInstant()
.atZone(
ZoneId.of( "Pacific/Auckland" )
)
.toLocalDate()
.isEqual(
ZonedDateTime
.now( ZoneId.of( "Pacific/Auckland" ) )
.minusHours( 1 )
.toLocalDate()
)
您正在使用多年前被 JSR 310 中定義的現代java.time類所取代的糟糕日期時間類。
顯然,您收到了一個java.util.Date
object。要做的第一件事就是將有缺陷的舊版轉換為現代替代品java.time.Instant
。 使用添加到舊類的新轉換方法。
Instant instant = myJavaUtilDate.toInstant() ;
傳統類和現代類都代表一個時刻,與 UTC 的偏移量為零小時-分鍾-秒。
了解在任何給定時刻,全球各地的日期因時區而異。 因此確定日期需要時區的上下文。
ZoneId z = ZoneId.of( "Asia/Tokyo" ) ;
ZonedDateTime zdt = instant.atZone( z ) ;
提取日期部分。
LocalDate ld = zdt.toLocalDate() ;
顯然您想將其與一小時前的當前日期進行比較。
LocalDate dateAnHourAgo = ZonedDateTime.now( z ).minusHours( 1 ).toLocalDate() ;
與isEqual
、 isBefore
和isAfter
方法進行比較。
它們不是約會對象; 它們是字符串:
return date2.startsWith(date1.substring(0, 10));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.