Spring前后端传参以及数据库字段详解
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格式对照表
字母 | 日期或时间元素 | 表示 | 示例 |
---|---|---|---|
G | Era标志符 | Text | AD |
y | 年 | Year | 1996; 96 |
M | 年中的月份 | Month | July; Jul;07 |
w | 年中的周数 | Number | 27 |
W | 月份中的周数 | Number | 2 |
D | 年中的天数 | Number | 189 |
d | 月份中的天数 | Number | 10 |
F | 月份中的星期 | Number | 2 |
E | 星期中的天数 | Text | Tuesday; Tue |
a | Am/pm 标记 | Text | PM |
H | 一天中的小时数 | (0-23) | Number 0 |
k | 一天中的小时数 | (1-24) | Number 24 |
K | am/pm 中的小时数 | (0-11) | Number 0 |
h | am/pm 中的小时数 | (1-12) | Number 12 |
m | 小时中的分钟数 | Number | 30 |
s | 分钟中的秒数 | Number | 55 |
S | 毫秒数 | Number | 978 |
z | 时区 | General time zone | Pacific 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,多者四舍五入