我在一些模型(POJO)類中有一個私有的java.sql.Timestamp myDate,如下所示
private String isActive;
private Date dob;
private Timestamp createdDate;
private Timestamp lastMktPrefUpdateAt;
我們使用spring boot版本為1.5.10.RELEASE,REST API對時間戳欄位的回應為毫秒格式,如下所示-
{
"isActive": "y",
"lastMktPrefUpdateAt": 1632195609787,
"dob": "08/12/1991",
"createdDate": 1632195609788
}
我們最近將spring boot版本升級到2.3.0.RELEASE,這就開始發送時間戳欄位,以回應一些ISO格式,如下所示-
{
"isActive": "y",
"lastMktPrefUpdateAt": "2021-09-20T22:10:09.787 0000",
"dob": "07/12/1991",
"createdDate": "2021-09-20T22:10:09.788 0000"
}
誰能幫助回答一下,我們如何將時間戳格式化為毫秒格式? 我們需要在全域層面上格式化Timestamp,即在不改變所有POJO類的情況下。
uj5u.com熱心網友回復:
在你的properties檔案中試一下
spring.jackson.serialization.write-date-as-timestamps:true
或者
使用@JsonFormat(shape = JsonFormat.Shape.NUMBER)在你想要的屬性上面。
Update
如果你想給你的時間戳添加毫秒,請嘗試將長值傳遞給Timestamp建構式并呼叫getTime()方法來接收一個13位的時間戳。
long now = System.currentTimeMillis()。
Timestamp timeStamp= new Timestamp(now)。
System.out.println(timeStamp.getTime())。
uj5u.com熱心網友回復:
你可以把這個字串轉換成一個ZonedDateTime物件,它有一個.toInstant().toEpochMilli()方法。
類似的情況。
long millis = ZonedDateTime.of(LocalDateTime.parse(str), ZoneId.of("Etc/UTC")).toInstant().toEpochMilli();
看到了嗎?
見:
如何在 Java 8 中從 LocalDateTime 獲取毫秒數
https://docs.oracle.com/javase/8/docs/api/java/time/LocalDateTime.html
https://docs.oracle.com/javase/8/docs/api/java/time/ZonedDateTime.html
然而,我建議在以后重構系統以使用不可變的 LocalDatTime 物件。
(也許您可以在該時間戳欄位上添加適當的注解,以便以特定的方式對其進行決議,但據我所知,沒有這樣的注解。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/332558.html
標籤:
