我在spring(3.1)数据REST中使用java.util.Date。如何以人类可读的形式打印日期? (例如MM / DD / YYYY)?
@Entity
public class MyEntity{
...
@Column(name="A_DATE_COLUMN")
@DateTimeFormat(iso=ISO.DATE)
private Date aDate;
..getters and setters
}
然而,当我打印我的实体时(在覆盖toString之后),我总是把日期作为一个长期。似乎@DateTimeFormat不会改变行为。我也尝试了不同的iso格式,但也没有帮助。
"aDate" : 1320130800000
这是我的弹簧数据休息的POM文件条目
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-rest-webmvc</artifactId>
<version>1.0.0.RELEASE</version>
<exclusions>
<exclusion>
<groupId></groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<artifactId>commons-logging</artifactId>
<groupId>commons-logging</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.1</version>
</dependency>
任何帮助都很明确。 PS。这是toString Implementation
@Override
public String toString() {
return getClass().getName() + "{"+
"\n\taDate: " + aDate
+ "\n}";
}
答案 0 :(得分:4)
看起来你需要编写一个自定义序列化程序来使Jackson(JSON库spring在引擎盖下使用)正确地将日期序列化为文本。
你的getter看起来像这样(JsonDateSerializer是自定义类)
@JsonSerialize(using=JsonDateSerializer.class)
public Date getDate() {
return date;
}
查看包含序列化程序代码的this blog post。序列化程序代码在这里复制,但博客文章中的解释可能有所帮助。
/**
* Used to serialize Java.util.Date, which is not a common JSON
* type, so we have to create a custom serialize method;.
*/
@Component
public class JsonDateSerializer extends JsonSerializer<Date>{
private static final SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy");
@Override
public void serialize(Date date, JsonGenerator gen, SerializerProvider provider)
throws IOException, JsonProcessingException {
String formattedDate = dateFormat.format(date);
gen.writeString(formattedDate);
}
}