gpt4 book ai didi

Java 8 设置全局时间格式化程序

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:51:26 26 4
gpt4 key购买 nike

我想将我自己的 DateTimeFormatter 设置为全局格式化程序。当我执行以下行时:

ZonedDateTime.now();

我得到:

2016-03-30T08:58:54.180-06:00[America/Chicago]

如果我这样做:

ZonedDateTime.now().format(DateTimeFormatter.RFC_1123_DATE_TIME)

我得到:

Wed, 30 Mar 2016 9:00:06 -0600

我想要上面打印的内容,但使用 am/pm,所以我制作了自定义格式化程序并像这样打印时间:

DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("EEE, dd MMM yyyy HH:mm:ss a Z");

ZonedDateTime.now().format(FORMATTER);

这给了我:

Wed, 30 Mar 2016 9:00:06 AM -0600

但我出于日志记录的目的到处使用此 .now() 方法,我不想在代码中到处定义格式化程序。有没有办法将格式化程序配置为调用 .now() 方法时使用的默认格式?我在想像 spring bean 配置方法之类的.....

最佳答案

您可以简单地在类中声明一个常量:

class UtilsOrWhatever {
public static final DateTimeFormater RFC_1123_DATE_TIME_AM_PM = DateTimeFormatter.ofPattern("EEE, dd MMM yyyy hh:mm:ss a Z");
}

并简单地在您的代码中使用:

ZonedDateTime.now().format(RFC_1123_DATE_TIME_AM_PM); //needs a static import

或者,使用纯 Java EE 7,您可以创建 a DateTimeFormatter Producer使用 @Produces 然后简单地 @Inject 它。

import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.Produces;

@ApplicationScoped
public class RfcFormatterProducer {
@Produces
private static final DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("EEE, dd MMM yyyy hh:mm:ss a Z");
}

在您的代码中:

@Inject DateTimeFormatter rfc;

如果你有多个格式化程序,你也可以像上面的链接一样给它起一个名字。

关于Java 8 设置全局时间格式化程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36311293/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com