1、js的date对象不能在controller里封装为java的date 前台传字符串后台自动封装为date
hibernate注解:
@DateTimeFormat(pattern = "yyyy-MM-dd") 就是前台可以传递2018-12-6这样的字符串,后台直接变为date类型 ,pattern也可以带上时间 @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss" ) 前台传递的字符串 要和pattern 对应
2、java的date类型也不能直接存到mysql里面,要转化为mysql的时间格式,mysql的日期类型有 date 例如2018-2-1
datetime 例如 2018-2-1 03:22:09 还有 TIMESTAMP 类型 也是2018-2-1 03:22:09
@Temporal(TemporalType.DATE) 该注解会把java的date类型转为mysql的date类型,并以2018-2-1存储到mysql里
@Temporal(TemporalType.TIME) 该注解会把java的date类型转为mysql的时间类型,并以03:22:09存储到mysql里
@Temporal(TemporalType.TIMESTAMP)例如 该注解会把java的date类型转为mysql的时间戳类型,并以03:22:09存储到mysql里
例如:2016-09-28 15:52:32:000
3、java date类型返回页面的时候,默认是long类型 一个长数字,
@JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")就是把date格式化后返回给前台,前台收到的就是字符串2018-6-2
timezone 是时区,这里是上海
spring boot全局配置,解决日期转换问题
1、返回的date类型不能格式化 2019-3-3 23:20:12 这种格式
因为spring boot默认使用jackson 只要加上
spring:
jackson:
date-format: yyyy-MM-dd HH:mm:ss
time-zone: GMT+8
-
#时间戳统一转换
-
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
-
spring.jackson.time-zone=GMT+8
2、日期转换的问题:向接口传入日期字符串,自动转换成date格式的对象
2、接口的代码
/**
* 测试日期
* @param joinDay
* @return
*/
@RequestMapping("date")
public Date testDate(Date joinDay){
return joinDay;
}
3、解决方案
配置了这个,前天封装 返回 存mysql java date转 mysql的datetime 都起作用
package com.trs.jxwy.financial.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
@Configuration
public class DateConfig{
@Bean
public Converter<String, Date> addNewConvert() {
return new Converter<String, Date>() {
@Override
public Date convert(String source) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
try {
date = sdf.parse((String) source);
} catch (ParseException e) {
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
try {
date = sdf2.parse(source);
} catch (ParseException e1) {
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd");
try {
date = sdf3.parse(source);
} catch (ParseException e2) {
// LOG.error("日期格式转换出错 ", e);
}
}
}
return date;
}
};
}
}