Ric*_*ard 8 java spring datetime javabeans java-8
我想将自己的DateTimeFormatter设置为全局格式化程序.当我执行以下操作时:
ZonedDateTime.now();
Run Code Online (Sandbox Code Playgroud)
我明白了:
2016-03-30T08:58:54.180-06:00[America/Chicago]
Run Code Online (Sandbox Code Playgroud)
如果我这样做:
ZonedDateTime.now().format(DateTimeFormatter.RFC_1123_DATE_TIME)
Run Code Online (Sandbox Code Playgroud)
我明白了:
Wed, 30 Mar 2016 9:00:06 -0600
Run Code Online (Sandbox Code Playgroud)
我想要上面打印的内容但是上午/下午所以我制作了自定义格式化程序并打印出时间如下:
DateTimeFormatter FORMATTER = DateTimeFormatter.ofPattern("EEE, dd MMM yyyy HH:mm:ss a Z");
ZonedDateTime.now().format(FORMATTER);
Run Code Online (Sandbox Code Playgroud)
哪个给了我:
Wed, 30 Mar 2016 9:00:06 AM -0600
Run Code Online (Sandbox Code Playgroud)
但我.now()
在任何地方都使用这种方法进行日志记录,我不想在代码中的任何地方定义格式化程序.有没有办法将格式化程序配置为调用.now()
方法时使用的默认格式?我在想春天的配置方法或什么.....
你可以简单地在一个类中声明一个常量:
class UtilsOrWhatever {
public static final DateTimeFormater RFC_1123_DATE_TIME_AM_PM = DateTimeFormatter.ofPattern("EEE, dd MMM yyyy hh:mm:ss a Z");
}
Run Code Online (Sandbox Code Playgroud)
并简单地在您的代码中使用:
ZonedDateTime.now().format(RFC_1123_DATE_TIME_AM_PM); //needs a static import
Run Code Online (Sandbox Code Playgroud)
或者,使用纯Java EE 7,您可以使用然后简单地创建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");
}
Run Code Online (Sandbox Code Playgroud)
在你的代码中:
@Inject DateTimeFormatter rfc;
Run Code Online (Sandbox Code Playgroud)
如果您有多个格式化程序,也可以在上面的链接中给它命名.
归档时间: |
|
查看次数: |
652 次 |
最近记录: |