java 实体类时间类型 自动转换格式
程序员文章站
2022-06-15 12:09:08
...
java 实体类时间类型 自动转换格式
/** 提交时间 **/
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JsonFormat(
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "GMT+8"
)
private Date date;
我一开始在时间上添加这两个注解不起作用,不知道为什么,
后来添加了一个注解:@JSONField
是有作用的
另外还有两个关于时间的类
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateJsonSerializer extends JsonSerializer<Date> {
private static final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/**
* 日期时间 Date转String
*
* @param date
* @param jsonGenerator
* @param serializerProvider
* @throws IOException
*/
@Override
public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
jsonGenerator.writeString(format.format(date));
}
}
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateJsonDeserializer extends JsonDeserializer<Date> {
private static final SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private static final SimpleDateFormat format2 = new SimpleDateFormat("yyyy-MM-dd");
private static final SimpleDateFormat format3 = new SimpleDateFormat("HH:mm:ss");
/**
* 日期时间 String转Date
*
* @param jsonParser
* @param deserializationContext
* @return
* @throws IOException
*/
@Override
public Date deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
String text = jsonParser.getText();
try {
if (text.contains("-") && !text.contains(":")) {
return format2.parse(text);
}
if (text.contains(":") && !text.contains("-")) {
return format3.parse(text);
}
return format.parse(text);
} catch (Exception e) {
System.out.println(e.getMessage());
throw new RuntimeException(e);
}
}
}
@JsonSerialize(using = DateJsonSerializer.class)
@JsonDeserialize(using = DateJsonDeserializer.class)
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(locale="zh", timezone="GMT+8", pattern="yyyy-MM-dd HH:mm:ss")
private Date date;