Spring前后端传参以及数据库字段详解

Lou.Chen
大约 2 分钟

1、数据库和pojo日期处理

date和datetiem的区别

Timestamp extends java.util.Date

date 可以精确到秒

datetiem可以精确到秒的后三位

第一种形式:
实体中:date
数据库中:datetime
SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyyMMddHHmmss"); //201807041120形式

1、日期date类型转字符串

String format = simpleDateFormat.format(new Date());

2、字符串转date类型

Date parse = simpleDateFormat.parse("201807041120");
第二种形式:
实体中:timestamp
数据库中:timestamp

获取当前时间 转为timestamp

Timestamp timestamp=new Timestamp(System.currentTimeMillis());
前台传来时间格式字符串后台date类型接收

String s="20180704112022";

没有使用mybatis框架

@DateTimeFormat(pattern = "yyyyMMddHHmmss")
private Date publishtime;
@DateTimeFormat(pattern = "yyyyMMddHHmmss")
@JsonFormat(pattern = "yyyyMMddHHmmss",timezone = "GMT+8")
private Date publishtime;

使用mybatis

@ColumnType(jdbcType=JdbcType.TIMESTAMP)
private Date createTime;
第三中形式:
实体中:String
数据库中:timestamp
@Column(name = "UPDATE_TIME")
@ColumnType(jdbcType=JdbcType.TIMESTAMP)
private String updateTime;
第四中形式(实体中尽量用String):
实体中:String
数据库中 : datetime/timestamp
   @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
   public String stubirthday;

simpledateformat格式对照表

字母日期或时间元素表示示例
GEra标志符TextAD
yYear1996; 96
M年中的月份MonthJuly; Jul;07
w年中的周数Number27
W月份中的周数Number2
D年中的天数Number189
d月份中的天数Number10
F月份中的星期Number2
E星期中的天数TextTuesday; Tue
aAm/pm 标记TextPM
H一天中的小时数(0-23)Number 0
k一天中的小时数(1-24)Number 24
Kam/pm 中的小时数(0-11)Number 0
ham/pm 中的小时数(1-12)Number 12
m小时中的分钟数Number30
s分钟中的秒数Number55
S毫秒数Number978
z时区General time zonePacific Standard Time; PST; GMT-08:00
Z时区RFC 822 time zone-0800

LocalDate、LocalDateTime、LocalTime时间处理

DateTimeFormatter 时间格式化

1、获取当前时间并格式化
LocalDateTime now = LocalDateTime.now();
System.out.println(now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
2、计算两个日期的天数间隔
		LocalDate localDateTime = LocalDate.parse("2018-04-01", DateTimeFormatter.ofPattern("yyyy-MM-dd"));
        LocalDate localDateTime1 = LocalDate.parse("2023-04-13", DateTimeFormatter.ofPattern("yyyy-MM-dd"));
        long l = localDateTime1.toEpochDay() - localDateTime.toEpochDay();
        double v = Double.parseDouble(String.valueOf(l));

2、小数处理

1、DecimalFormat :格式化小数
DecimalFormat decimalFormat=new DecimalFormat("##.00");
1、# 的作用

相当于占位符,小数点之前 # 的个数对整数没有影响

小数点之后的 # 若小数点的后面超出#的个数则按照#的个数进行四舍五入的保留小数。如果比#的个数小,则直接输出,不会补0

2、0的作用

相当于位补,**小数点之前 **的 0的个数小于整数位,则直接输入整数。若0的个数大于整数位数,则在整数位前面补0和直到位数相同

小数点之后的0的个数也 相同,不足补0,多者四舍五入

2、BIgDecamal 小数计算与格式化