![](/img/trans.png)
[英]Converting String into LocalDateTime using Java 8 DateTimeFormatter
[英]Default DateTimeFormatter returns empty string when formatting LocalDateTime in Java 8
以下代碼返回一個空字符串:
LocalDateTime.parse("2018-01-01T00:00:00.00")
.format(new DateTimeFormatterBuilder().toFormatter())
我希望異常或以某種默認方式格式化的日期。
我是否發現Java中的錯誤,或者是否符合規范? 我在Javadoc中找不到有關此行為的任何信息。
DateTimeFormatterBuilder
用於構建格式,它從空開始。 您必須調用其各種方法,例如appendPattern
來添加所需的格式。
DateTimeFormatter
具有一些可以直接使用的標准格式。 它們使用DateTimeFormatterBuilder
構建格式。 例如:
public static final DateTimeFormatter ISO_LOCAL_DATE;
static {
ISO_LOCAL_DATE = new DateTimeFormatterBuilder()
.appendValue(YEAR, 4, 10, SignStyle.EXCEEDS_PAD)
.appendLiteral('-')
.appendValue(MONTH_OF_YEAR, 2)
.appendLiteral('-')
.appendValue(DAY_OF_MONTH, 2)
.toFormatter(ResolverStyle.STRICT, IsoChronology.INSTANCE);
}
您的代碼等效於:
LocalDateTime.parse("2018-01-01T00:00:00.00").format(DateTimeFormatter.ofPattern(""))
在所有情況下都會產生一個空字符串。
我希望異常或以某種默認方式格式化的日期
那是你的意見。 但是,IMO,創建一個空的生成器並且不添加任何內容 ,應該會導致-猜猜是什么-“空”格式化程序-或具有空模式的格式化程序,或者其他原因。
文檔沒有明確說明會發生這種情況,但是也沒有說它將以某種默認方式拋出異常或格式 。 如果文檔沒有這么說,那么您為什么會期望呢? 根據什么?
但是最糟糕的事情是,僅僅因為您對毫無根據的期望而感到不滿意,這顯然是一個錯誤! 為什么開發人員-尤其是cr腳的開發人員-在事情沒有按預期進行時(大多數情況下都是他們的錯)傾向於“哇,我發現了一個錯誤” ?
以及為什么首先要創建一個空模式?
“ OMG,事情沒有按我預期的那樣發生,所以肯定是一個錯誤!”
-cr腳的開發人員
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.