簡體   English   中英

在Java 8中格式化LocalDateTime時,默認的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.

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