我正在使用Spring Boot休眠模式。我还有一个用于继承DATE类的时间值的类,我在我的实体中使用了这个继承的类。
数据库中的列值为'08 / 01/2020 18:02:22'。 当我通过邮递员获得此值时,其余客户端将其显示为“ 2020-01-08T15:02:22.000 + 0000”。 从其他客户端发送'2020-01-08T15:02:22.000 + 0000'时,列值显示为'08 / 01/2020 18:02:22'。(正确值)
该值到处都应显示为“ dd / MM / yyyy HH:mm:ss”。我该怎么办?
继承的日期类中的构造方法:
public partial class Main : Form
{
public Main()
{
InitializeComponent();
CheckForIllegalCrossThreadCalls = false;
}
private void GetCurLoc()
{
while (true)
{
PosX.Text = MousePosition.X.ToString();
PosY.Text = (Int32.Parse(PosYMax.Text) - MousePosition.Y).ToString();
}
}
private void Main_Load(object sender, EventArgs e)
{
Thread curLoc = new Thread(new ThreadStart(GetCurLoc));
curLoc.Start();
}
}
答案 0 :(得分:0)
您正在寻找的是一种在将时间戳值从Java对象序列化为JSON或XML时修改时间戳值的方法。
负责此操作的库是Jackson,实际执行此操作的对象称为ObjectMapper。默认情况下,它将以ISO-8601表示法序列化。
如果要更改其输出方式,则可以直接进行编码以定义一个Jackson2ObjectMapperBuilderCustomizer
bean(请参见下文),或者如果您使用Spring Boot,则可以将以下条目添加到application.properties
中;
spring.jackson.date-format=dd/MM/yyyy HH:mm:ss
但是有一个缺点,那就是它不支持Java8 Date和Time类。因此,它不会影响它对java.time.LocalDate
或java.time.Localtime
进行序列化的方式,也不会影响其组合的java.time.LocalDateTime
对象的方式。它仅适用于java.util.Date
或java.util.Calendar
。
如果您需要Java8支持,那么唯一的选择就是像这样
@Bean
public Jackson2ObjectMapperBuilderCustomizer jsonCustomizer() {
final String dateFormat = "yyyy-MM-dd";
final String dateTimeFormat = "yyyy-MM-dd HH:mm:ss";
return builder -> {
builder.simpleDateFormat(dateTimeFormat);
builder.serializers(new LocalDateSerializer(DateTimeFormatter.ofPattern(dateFormat)));
builder.serializers(new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(dateTimeFormat)));
};
}
最后一点,如果您只想更改某些字段而不是全部的输出,则可以使用Jackson的@com.fasterxml.jackson.annotation.JsonFormat
批注在DTO中注释特定字段。