繁体   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