Fastjson2 如何格式化日期
在 fastjson2 中,格式化日期非常灵活,既可以通过注解针对特定字段配置,也可以通过全局参数统一配置。以下是三种最常用的方式:
1. 使用 @JSONField 注解(推荐)
如果你只想对某个 Java Bean 中的特定日期字段进行格式化,这是最精准的方法。
public User {
public Long;
// 直接指定格式化模板
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
public LocalDateTime createTime;
@JSONField(format = "yyyy-MM-dd")
public Date birthday;
}
2. 在序列化时动态指定(代码控制)
如果你不想在 Model 类上写死格式,可以在调用 toJSONString 时通过 JSONWriter.Context 或者直接传入格式化字符串。
User user = new User();
user.createTime = LocalDateTime.now();
// 直接传入日期 format 字符串
String json = JSON.toJSONString(user, "yyyy-MM-dd HH:mm:ss");
以下是常用日期格式:| 需求场景 | 推荐格式 | 示例 |
|---|---|---|
| REST API | yyyy-MM-dd'T'HH:mm:ssXXX | 2026-05-06T14:30:25+08:00 |
| 数据库存储 | yyyy-MM-dd HH:mm:ss | 2026-05-06 14:30:25 |
| 前端表格 | yyyy-MM-dd | 2026-05-06 |
| 详情页展示 | yyyy年MM月dd日 HH:mm | 2026年05月06日 14:30 |
| 日志文件名 | yyyyMMdd_HHmmss | 20260506_143025 |
| 性能测试 | HH:mm:ss.SSS | 14:30:25.123 |
3. Spring Boot 全局配置
如果你在 Spring Boot 中集成 Fastjson2,可以在消息转换器中统一设置日期格式,这样接口返回的所有日期都会遵循该格式。
@Configuration
public FastJsonConfiguration {
@Bean
public FastJsonConfig fastJsonConfig() {
FastJsonConfig config = new FastJsonConfig();
// 设置全局日期格式
config.setDateFormat("yyyy-MM-dd HH:mm:ss");
return config;
}
}
特别注意:常见日期类型的处理
| 类型 | 默认行为 | 推荐处理方式 |
|---|---|---|
java.util.Date | 默认输出毫秒时间戳 | 使用 format 属性 |
LocalDateTime | 默认 ISO 格式 (T 分隔) | 使用 format 属性 |
| Unix 时间戳 | 默认不开启 | 需配置 JSONWriter.Feature.WriteMillisAsTimestamps |
提示:
如果你的项目涉及多线程环境,fastjson2 的日期格式化是线程安全的(基于新的 Java 8 Time API 实现),这比 Fastjson 1.x 中基于 SimpleDateFormat 的实现要可靠得多。

