时间格式操作
实体类中时间转换
-
@JsonFormat
-
作用
- 序列化时间 后端查出来的数据格式化后返给前端
-
参数
pattern:是你需要转换的时间日期的格式
timezone:是时间设置为东八区,避免时间在转换中有误差 GMT+8 上海时区
shape = JsonFormat.Shape.STRING, 序列化后的格式
-
例和导包
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd") private Date createTime; //创建时间
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.2</version> </dependency>
-
@DateTimeForMat
-
作用
入参格式化 string 转datetime
-
参数
pattern:是你需要转换的时间日期的格式
-
/**
* 最后工作日
*/
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date lastWorkTime;
SimpleDateFormat
- 作用
- 主要是时间格式化处理 成想要的格式
Date date = new Date();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//时间 按格式转字符串
String format = simpleDateFormat.format(date); // 2022-03-08 17:24:25
System.out.println(format);
//字符串格式转时间格式
String time1 = "2022-03-08";
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
java.util.Date time=null;
try {
time= sdf.parse(time1);
System.out.println(time);//Tue Mar 08 00:00:00 CST 2022
} catch (ParseException e) {
e.printStackTrace();
}
}
Calendar类 日历
-
创建对象
//创建对象 Calendar c = Calendar.getInstance();//默认是当前日期 年月日获取都是当 前时间 //创建一个指定日期的Canlendar对象 c.set(2022,3,9); int i = c.get(Calendar.MONTH); //获取月份 System.out.println(i); //3
-
**Calendar类对象字段类型 —用来方便获取当前值 **
- Calendar类中用一下这些常量表示不同的意义,jdk内的很多类其实都是采用的这种思想
常量 | 描述 |
---|---|
Calendar.YEAR | 年份 |
Calendar.MONTH | 月份 |
Calendar.DATE | 日期 |
Calendar.DAY_OF_MONTH | 日期,和上面的字段意义完全相同 |
Calendar.HOUR | 12小时制的小时 |
Calendar.HOUR_OF_DAY | 24小时制的小时 |
Calendar.MINUTE | 分钟 |
Calendar.SECOND | 秒 |
Calendar.DAY_OF_WEEK | 星期几 |
-
get方法
//创建对象 Calendar c = Calendar.getInstance(); //默认是当前日期 年月日获取都是当 前时间 int yeay= c.get(Calendar.YEAR); //获取年 int month = c.get(Calendar.MONTH); //获取月份 int date = c.get(Calendar.DATE); //获取日 int ofDay = c.get(Calendar.HOUR_OF_DAY); //获取小时 int minute = c.get(Calendar.MINUTE); //获得分钟 int second = c.get(Calendar.SECOND); //获取秒 // 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星 期二,以此类推) int day = c.get(Calendar.DAY_OF_WEEK);
-
set方法
//创建对象 Calendar c = Calendar.getInstance(); //默认是当前日期 年月日获取都是当 前时间 c.set(2022,3,9);// 设置年月日 //也可以单独设置 //把 c对象代表的日期设置为10号, c.set(Calendar.DATE,10); //设置日 c.set(Calendar.YEAR,2008); //设置年
-
add方法
//创建对象 Calendar c = Calendar.getInstance(); //默认是当前日期 年月日获取都是当 前时间 2022-3-9 // 把c对象的日期加上10,也就是c1也就表示为10天后的日期,其它所有的数值会被重新 计算 c.add(Calendar.DATE,10); int i = c.get(Calendar.DATE); //19 c.add(Calendar.DATE,-10); // 9 int i1 = c.get(Calendar.DATE); //19
获取当前时间的几种方法
1. date
通过Date类来获取当前时间,比较常用。需要使用Java.util.Date类,速度一般
Date day = new Date();
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
System.out.println(day);// Fri Apr 29 09:38:31 CST 2022
System.out.println(sdf.format(day));//2022-04-29
2.System 系统
通过System类中的currentTimeMillis方法来获取当前时间,无需导入类,速度最快
SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd");
System.out.println(System.currentTimeMillis());//1651196311760
System.out.println(sdf.format(System.currentTimeMillis()));//2022-04-29
3.通过Calendar类来获取当前时间
上面有写到