Java:@JsonFormat與@DateTimeFormat的關係
阿新 • • 發佈:2022-04-20
@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 。