3 回答

TA貢獻1966條經驗 獲得超4個贊
LocalDate
.parse( "2018-08-29" )
.isEqual(
OffsetDateTime
.parse( "2018-08-30T00:00:00+10:00" )
.toLocalDate()
)
錯誤的
時間
在java.time 中解析每個輸入的適當類型。
LocalDate ld = LocalDate.parse( "2018-08-29" ) ;
OffsetDateTime odt = OffsetDateTime.parse( "2018-08-30T00:00:00+10:00" ) ;
通過LocalDate從 中提取 a 進行比較OffsetDateTime。
Boolean sameDate = ld.isEqual( odt.toLocalDate() ) ;
錯誤的
或者,您可能想將其OffsetDateTime從 UTC 前十小時的偏移調整為另一個偏移或時區。例如,在提取要比較的日期之前,讓我們調整回 UTC。
LocalDate
.parse( "2018-08-29" )
.isEqual(
OffsetDateTime
.parse( "2018-08-30T00:00:00+10:00" )
.withOffsetSameInstant( ZoneOffset.UTC )
.toLocalDate()
)
這會將我們的結果從false上面代碼中看到的更改為true。
真的

TA貢獻1848條經驗 獲得超6個贊
最快的方法是;
String date1 = "2018-08-29";
String date2 = "2018-08-30T00:00:00+10:00";
boolean isEqual = date2.startsWith(date1);

TA貢獻1827條經驗 獲得超8個贊
如果這是您唯一想知道的關于這兩個字符串的信息:
LocalDate ld1 = LocalDate.parse(date1);
LocalDate ld2 = LocalDate.parse(date2, DateTimeFormatter.ISO_OFFSET_DATE_TIME);
if (ld1.isEqual(ld2)) {
System.out.println("They are the same date");
} else {
System.out.println("They are different dates");
}
使用您的字符串示例從問題中輸出:
他們是不同的日期
當他的回答出現時,我正在編寫類似于Basil Bourque 的代碼。我更喜歡通過正確的日期時間對象來處理日期和時間,這正是他正在做的。通過解析date2為 ,OffsetDateTime您可以保留所有信息,并且LocalDate可以輕松轉換為進行比較。對于大多數目的,我推薦這種方式。
只有當你確定你永遠不需要一天中的時間時,你才能走捷徑。你當然可以用王俊杰的快捷方式。不過,我更喜歡上面自己的代碼,原因有兩個:我清楚地告訴讀者這些字符串是日期和時間,并正確處理它們。因此它還提供了字符串格式的驗證。如果某天不小心得到了一個完全不同的字符串,您將通過DateTimeParseException.
添加回答
舉報