簡體   English   中英

使用 LocalDate 的日期格式問題

[英]Date format issue using LocalDate

我需要將Date object (它在調試模式下顯示 --->“Mon Sep 23 00:00:00 EDT 2019”)轉換為另一個具有“yyyy-MM-dd”格式的Date object

我嘗試了以下代碼,但出現運行時錯誤:

java.time.format.DateTimeParseException:無法在索引 0 處解析文本“Mon Sep 23 00:00:00 EDT 2019”。

LocalDate localDate = LocalDate.parse(date.toString(), DateTimeFormatter.ofPattern("yyyy-MM-dd"));
Date result = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());

謝謝你的幫助!。

你的錯誤

您在調試器中看到的內容由 IDE 的自定義格式化程序進行格式化。 Date.toString()有它自己的格式。 但是,您應該使用 java 轉換方法在日期和本地日期之間進行更改

這是date.toString()上的一個除外:

Java Date 類的 toString() 方法將此日期對象轉換為“dow mon dd hh:mm:ss zzz yyy”形式的字符串。 此方法覆蓋類對象中的 toString。

來源

模式"yyyy-MM-dd"與此不兼容。

然而,你為什么要這樣做? 有更好的方法可以將Date轉換為LocalDate

將日期轉換為本地日期(反之亦然)

請嘗試以下操作:

public LocalDate convertToLocalDateViaInstant(Date dateToConvert) {
    return dateToConvert.toInstant()
      .atZone(ZoneId.systemDefault())
      .toLocalDate();
}

public Date convertToDateViaSqlDate(LocalDate dateToConvert) {
    return java.sql.Date.valueOf(dateToConvert);
}

來源

Date對象是Date ,沒有別的。 Date對象的字符串表示可以有格式。 我認為這

new SimpleDateFormat('yyyy-MM-dd').format(date);

是您唯一需要的東西。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM