跳到主要内容

配置全局日期和时间格式

ChatGPT-4o 中英对照 Configuring a Global Date and Time Format

默认情况下,未使用 @DateTimeFormat 注释的日期和时间字段会通过 DateFormat.SHORT 样式从字符串转换。如果您愿意,可以通过定义自己的全局格式来更改此设置。

要做到这一点,确保 Spring 不注册默认的格式化器。相反,可以借助以下方法手动注册格式化器:

  • org.springframework.format.datetime.standard.DateTimeFormatterRegistrar

  • org.springframework.format.datetime.DateFormatterRegistrar

例如,以下配置注册了一个全局的 yyyyMMdd 格式:

@Configuration
public class ApplicationConfiguration {

@Bean
public FormattingConversionService conversionService() {

// Use the DefaultFormattingConversionService but do not register defaults
DefaultFormattingConversionService conversionService =
new DefaultFormattingConversionService(false);

// Ensure @NumberFormat is still supported
conversionService.addFormatterForFieldAnnotation(
new NumberFormatAnnotationFormatterFactory());

// Register JSR-310 date conversion with a specific global format
DateTimeFormatterRegistrar dateTimeRegistrar = new DateTimeFormatterRegistrar();
dateTimeRegistrar.setDateFormatter(DateTimeFormatter.ofPattern("yyyyMMdd"));
dateTimeRegistrar.registerFormatters(conversionService);

// Register date conversion with a specific global format
DateFormatterRegistrar dateRegistrar = new DateFormatterRegistrar();
dateRegistrar.setFormatter(new DateFormatter("yyyyMMdd"));
dateRegistrar.registerFormatters(conversionService);

return conversionService;
}
}
java

请注意,在配置 web 应用程序中的日期和时间格式时有额外的注意事项。请参阅 WebMVC 转换和格式化WebFlux 转换和格式化