Lorsque je créais une API RESTful avec Spring Boot, je voulais formater le type de date de la réponse au format étendu ISO 8601 et le renvoyer. Il a fallu beaucoup de temps pour trouver le format, je vais donc le laisser sous forme de mémorandum.
Il peut être émis avec aaaa-MM-jj'T'HH: mm: ssXXX
.
Test.java
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test {
public static void main(String[] args) {
Date d = new Date();
SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
System.out.println(sf.format(d));
}
}
2018-12-19T15:46:06+09:00
Si vous utilisez Spring Boot, vous devez utiliser ** Jackson ** comme conversion JSON de la réponse. Vous pouvez spécifier le format par défaut en ajoutant les paramètres suivants à ʻapplication.yml`.
application.yml
spring:
jackson:
date-format: "yyyy-MM-dd'T'HH:mm:ssXXX"
time-zone: "Asia/Tokyo"
Jackson sera ** GMT si vous ne spécifiez pas de fuseau horaire **. En gros, je pense qu'il vaut mieux spécifier le fuseau horaire.
Si vous souhaitez convertir explicitement le format au lieu du format par défaut, écrivez comme suit.
Response.java
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
public class Response {
@JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ssXXX", timezone = "Asia/Tokyo")
private Date createdAt;
public Date getCreatedAt() {
return createdAt;
}
public void setCreatedAt(Date createdAt) {
this.createdAt = createdAt;
}
}
Le format est légèrement différent pour chaque langue, donc c'est étonnamment addictif. N'est-ce pas tout unifié?
Recommended Posts