1. 程式人生 > 其它 >Java:@JsonFormat與@DateTimeFormat的關係

Java:@JsonFormat與@DateTimeFormat的關係

@JsonFormat
@JsonFormat是Jackson的註解,用來格式化序列化後的時間型別欄位

不使用@JsonFormat格式化時間
public class User implements Serializable {
    private Date creatTime;
    ...
}

序列化結果:{"creatTime":1624606883374}
1
使用@JsonFormat格式化時間
public class User implements Serializable {
    @JsonFormat(pattern="yyyy-MM-dd", timezone="GMT+8")
    
private Date creatTime; ... } @DateTimeFormat @DateTimeFormat是Spring的註解,用來轉化Get請求中時間型別欄位的傳輸 public class User implements Serializable { private Date createTime; ... } @Slf4j @RestController public class TestController { @GetMapping("/test") public void test(User user){ log.info(
"{}",user); } } 不使用@DateTimeFormat(會報BindException) { "timestamp": "2021-06-28T07:59:08.990+0000", "status": 400, "error": "Bad Request", "errors": [ { "codes": [ "typeMismatch.user.createTime", "typeMismatch.createTime", "typeMismatch.java.util.Date",
"typeMismatch" ], "arguments": [ { "codes": [ "user.createTime", "createTime" ], "arguments": null, "defaultMessage": "createTime", "code": "createTime" } ], "defaultMessage": "Failed to convert property value of type 'java.lang.String' to required type 'java.util.Date' for property 'createTime'; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [java.util.Date] for value '2021-06-24'; nested exception is java.lang.IllegalArgumentException", "objectName": "user", "field": "createTime", "rejectedValue": "2021-06-24", "bindingFailure": true, "code": "typeMismatch" } ], "message": "Validation failed for object='user'. Error count: 1", "path": "/test" } 使用@DateTimeFormat(正常獲取) public class User implements Serializable { @DateTimeFormat(pattern="yyyy-MM-dd") private Date createTime; ... }
java mysql返回的日期格式化
 2019-07-26 10:46:00  admin 原創 1438
摘要:java mysql返回的日期格式化
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;

@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date time;

一、@JsonFormat(locale = "zh" timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
二、@JsonFormat引數講解
1.locale代表中國的意思:中國時間段
2.pattern寫的就是對於資料庫的時間段
yyyy代表-年
MM代表-月
dd代表-日
HH代表-時
mm代表分
ss代表-3.TimeZone
TimeZone 表示時區偏移量,也可以計算夏令時。
在操作 Date, Calendar等表示日期/時間的物件時,經常會用到TimeZone;因為不同的時區,時間不同。

那麼timezone加上GMT+8什麼意思呢?

GMT 就是格林威治標準時間的英文縮寫(Greenwich Mean Time 格林尼治標準時間),是世界標準時間,gmt+8 是格林威治時間+8小時,中國所在時區就是gmt+8 。