pringMVC序列化
springMVC整合jackson后,可以自定义json转换的数据,例如数据库的datetime类型,java获取后jackson默认将该类型转为long,所以前端页面看到的是一串数字,我们可以自定义接口序列化输出的日期的格式
@JSONField(name = "ENDTIME",ordinal = 0,format = "yyyy-MM-dd hh:mm:ss")
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JsonFormat(timezone = "GMT+8",pattern = "yyyy MM-dd HH:mm:ss")
Date endTime;
接口进来, — @DateTimeFormat(pattern=“yyyy-MM-dd HH:mm:ss”)
接口出去 —@JsonFormat(timezone = “GMT+8”,pattern = “yyyy MM-dd HH:mm:ss”)
序列化: @JSONField(name = “ENDTIME”,ordinal = 0,format = “yyyy-MM-dd hh:mm:ss”)
在springboot应用中,@RestController层注解的json默认序列化中,日期格式默认为:2018-06-17T07:24:07.430+0000。日常需求中,往往需要将日期转化为
修改方法:
方法一:
在apllication.properties加入下面配置
#时间戳统一转换
spring.jackson.date-format=yyyy-MM-dd HH:mm:ss
//这个是时区,一定要加,否则会默认为格林尼治时间,即少8小时
spring.jackson.time-zone=GMT+8
方法二:
//在bean对象上加上
@JsonFormat(timezone = "GMT+8", pattern = "yyyyMMddHHmmss")
private Date createTime;
//出参 入参数
1.作为入参格式化
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
2.作为出参格式化
可以单独加在相应的成员变量上
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
时间
package com.streamax.basePlatForm.util;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
/**
* 日期处理
*
* @author llyang
* @date 2018/11/20 19:11
*/
public class DateUtil {
private DateUtil(){}
public static final String shortSimpleFormat="yyyyMMdd";
public static final String allSimpleFormat = "yyyy-MM-dd HH:mm:ss";
public static final String YYYY_MM_DD = "yyyy-MM-dd";
//获取时间的long形态 单位s
public static long getLongFromDate(String string){
Date date = strToDate(string);
return date.getTime()/1000;
}
// 将 数字形式的值 转化为 String
//eg: DateUtil.getStringFromInt(1547654400) ------- 2019-01-17 00:00:00
public static String getStringFromInt(Integer i){
return dateToStr(timeToDate(i));
}
/**
* 时间转换为时间戳 单位是秒
*/
public static Long dateToTime(Date date) {
if(date == null) {
return null;
}
return (date.getTime() / 1000);
}
/**
* 当前时间戳,秒
* @return
*/
public static Long currentTime() {
return System.currentTimeMillis() / 1000;
}
/**
* 获取前多少天
* @param day
* @return
*/
public static Date preDay(int day) {
Calendar c = Calendar.getInstance();
c.setTime(new Date());
c.add(Calendar.DATE,-day);
return c.getTime();
}
/**
* 获取后多少天
* @param day
* @return
*/
public static Date afterDay(int day) {
Calendar c = Calendar.getInstance();
c.setTime(new Date());
c.add(Calendar.DATE,day);
return c.getTime();
}
/**
* 下次同一天的日期
* @param day
* @return
*/
public static Date nextDay(Integer day) {
Calendar c = Calendar.getInstance();
Date now = new Date();
c.setTime(now);
c.set(Calendar.DAY_OF_MONTH,day);
c.set(Calendar.HOUR,10);
c.set(Calendar.MINUTE,30);
c.set(Calendar.SECOND,0);
Date date = c.getTime();
if(now.getTime() > date.getTime()) {
c.add(Calendar.MONTH,1);
}
return c.getTime();
}
/**
* 时间戳转换为时间
* @param time
* @return
*/
public static Date timeToDate(Integer time) {
if(time == null || time <= 0) {
return null;
}
Long t = new Long(time + "000");
return new Date(t);
}
public static Date parseStringToDateTime(String timeStr) {
SimpleDateFormat format = new SimpleDateFormat(shortSimpleFormat);
try {
return format.parse(timeStr);
} catch (ParseException e) {
e.printStackTrace();
return null;
}
}
/**
* date转yyyy-MM-dd HH:mm:ss字符串
* @param date
* @return
*/
public static String dateToStr(Date date) {
SimpleDateFormat format = new SimpleDateFormat(allSimpleFormat);
return format.format(date);
}
/**
* date转yyyy-MM-dd 字符串
* @param date
* @return
*/
public static String dateToShortStr(Date date) {
SimpleDateFormat format = new SimpleDateFormat(YYYY_MM_DD);
return format.format(date);
}
/**
* String (yyyy-MM-dd HH:mm:ss) 字符串转日期
* @param dateStr
* @return
*/
public static Date strToDate(String dateStr) {
SimpleDateFormat format = new SimpleDateFormat(allSimpleFormat);
try {
return format.parse(dateStr);
} catch (ParseException e) {
throw new CustomException(ErrorCode.PARAMETER_ERROR);
}
}
}
扫盲: 大写h是24,小写的是12进制 - 日期大小写
d 月中的某一天。一位数的日期没有前导零。
dd 月中的某一天。一位数的日期有一个前导零。
ddd 周中某天的缩写名称,在 AbbreviatedDayNames 中定义。
dddd 周中某天的完整名称,在 DayNames 中定义。
M 月份数字。一位数的月份没有前导零。
MM 月份数字。一位数的月份有一个前导零。
MMM 月份的缩写名称,在 AbbreviatedMonthNames 中定义。
MMMM 月份的完整名称,在 MonthNames 中定义。
y 不包含纪元的年份。不具有前导零。
yy 不包含纪元的年份。具有前导零。
yyyy 包括纪元的四位数的年份。
gg 时期或纪元。
h 12小时制的小时。一位数的小时数没有前导零。
hh 12小时制的小时。一位数的小时数有前导零。
H 24小时制的小时。一位数的小时数没有前导零。
HH 24小时制的小时。一位数的小时数有前导零。
如果您觉得我的付出对您有帮助,还请关注+点赞哦