SpringBoot使用@JSONField(format = "yyyy-MM-dd HH:mm:ss")无效的问题
使用@JsonFormat(timezone = "GMT+8",pattern = "yyyyMMddHHmmss")获取的时间有问题
实体类中:
@Temporal(TemporalType.TIMESTAMP)
@JSONField(format = "yyyy-MM-dd HH:mm:ss")
@Column(name="V_DATE")
private Date vdate;
1.使用JSON规范:
1)导入<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.54</version>
</dependency>
2)在自己的XXXApplication.java里添加:
@Bean
public HttpMessageConverters fastJsonHttpMessageConverters() {
// 1. 需要定义一个converter转换消息的对象
FastJsonHttpMessageConverter fasHttpMessageConverter =
new FastJsonHttpMessageConverter();
// 2. 添加fastjson的配置信息,比如:是否需要格式化返回的json的数据
FastJsonConfig fastJsonConfig = new FastJsonConfig();
fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat);
// 3. 在converter中添加配置信息
fasHttpMessageConverter.setFastJsonConfig(fastJsonConfig);
HttpMessageConverter<?> converter = fasHttpMessageConverter;
//解决中文乱码
List<MediaType> fastMediaTypes = new ArrayList<>();
fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
fasHttpMessageConverter.setSupportedMediaTypes(fastMediaTypes);
return new HttpMessageConverters(converter);
}
成功解决问题
2.在vue中使用拦截器:
1)全局使用:
Vue.filter(‘dateFormat‘,function(dataStr,pattern=‘‘){
console.log(‘调用quan有的‘)
var dt = new Date(dataStr)
var y = dt.getFullYear()
var m = dt.getMonth()+1;
var d = dt.getDate()
if (pattern.toLowerCase() == ‘yyyy-mm-dd‘) {
return `${y}-${m}-${d}`
}else{
var hh = dt.getHours()
var mm = dt.getMinutes()
var ss = dt.getSeconds()
return `${y}-${m}-${d} ${hh}:${mm}:${ss}`
}
})
2)局部使用:
export default {
data() {
...
},
filters:{
dformat(hirdate){
var dt = new Date(hirdate)
var y = dt.getFullYear()
var m = dt.getMonth()+1;
var d = dt.getDate()
return `${y}-${m}-${d}`
}
}
使用拦截器的调用方式即可。
SpringBoot使用@JSONField(format = "yyyy-MM-dd HH:mm:ss")无效的问题(使用TIMESTAMP无法正确显示时间格式)
原文:https://www.cnblogs.com/demonzql/p/11216765.html