我必須找出給定時間和當前時間之間的天數。給定時間是ISO 格式,一個例子是“2021-01-14 16:23:46.217-06:00”。
我已經嘗試使用“java.text.SimpleDateFormat”,但它沒有給我準確的結果。
在低于給定日期中,對于今天的時間,我得到的輸出為“633”天,這是不正確的。不知何故,在決議后將日期設為“2020 年 12 月 21 日”,這是不正確的
String TIMESTAMP_FORMAT = "YYYY-MM-DD hh:mm:ss.s-hh:mm" ;
int noOfDays = Utility.getTimeDifferenceInDays("2021-01-14 16:23:46.217-06:00", TIMESTAMP_FORMAT);
public static int getTimeDifferenceInDays(String timestamp, String TIMESTAMP_FORMAT) {
DateFormat df = new SimpleDateFormat(TIMESTAMP_FORMAT);
try {
Date date = df.parse(timestamp);
long timeDifference = (System.currentTimeMillis() - date.getTime());
return (int) (timeDifference / (1000*60*60*24));
} catch (ParseException e) {
e.printStackTrace();
}
return 0;
}
尋找一個更好的解決方案,給我正確的天數。謝謝
uj5u.com熱心網友回復:
使用 java.time API
類Date和SimpleDateFormat是遺產。
自 Java 8(10年前發布)以來,我們有了一個新的 Time API,由java.time包中的類表示。
要決議和格式化資料,您可以使用DateTimeFormatter. DateTimeFormatter可以通過靜態方法或ofPattern()使用DateTimeFormatterBuilder.
ofPattern():
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSXXX");
DateTimeFormatterBuilder:
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendPattern("yyyy-MM-dd HH:mm:ss.") // main date-time part
.appendValue(ChronoField.MILLI_OF_SECOND, 3) // fraction part of second
.appendOffset(" HH:MM", " 00:00") // can be substituted with appendPattern("zzz") or appendPattern("XXX")
.toFormatter();
"2021-01-14 16:23:46.217-06:00"您作為示例提供的 string包含日期時間資訊和 UTC 偏移量。這樣的資料可以用 來表示OffsetDateTime。
要獲取兩個時間物件之間的天數,您可以使用ChronoUnit.between()@MC Emperor在評論中提到的。
這就是整個代碼的樣子:
String toParse = "2021-01-14 16:23:46.217-06:00";
OffsetDateTime dateTime = OffsetDateTime.parse(toParse, formatter);
System.out.println("parsed date-time: " dateTime);
Instant now = Instant.now();
long days = ChronoUnit.DAYS.between(dateTime.toInstant(), now);
System.out.println("days: " days);
輸出:
parsed date-time: 2021-01-14T16:23:46.217-06:00
days: 615
請注意,由于在這種情況下您只需要當前日期之間的天數而不是OffsetDateTime可以使用LocalDateTime,因此在決議字串時將忽略 UTC 偏移量。如果您決定這樣做,那么傳遞給的第二個引數ChronoUnit.between()也應該是 type LocalDateTime。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/510334.html
標籤:爪哇日期约会时间
