文章目录
一、JDK8之前的日期时间API
1.1 System类的currentTimeMillis()
用来返回当前时间与1970年1月1日0时0分0秒
之间以毫秒
为单位的时间差。
1.2 两个Date类
1.2.1 java.util.Date包下的
public static void main(String[] args) {
// 空参构造器
Date date = new Date();
System.out.println(date.toString());
// 获取毫秒数
long time = date.getTime();
System.out.println(time);
// 有参构造器
Date date1 = new Date(time);
System.out.println(date1);
}
1.2.2 java.sql.Date包下的
public static void main(String[] args) {
Date date = new Date(1694316241822L);
System.out.println(date);
}
1.3 SimpleDateFormat
- 是一个不与语言环境有关的方式来
格式化
和解析
日期的具体类。 - 格式化:日期 --> 文本
- 解析:文本 --> 日期
public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date();
// 格式化:日期 --> 字符串
String format = sdf.format(date);
System.out.println(format);
// 解析:字符串 --> 日期
Date date1 = sdf.parse("2023-09-10 22:16:18");
System.out.println(date1);
}
1.4 Calendar(日历类)
二、JDK8之后的日期时间API
2.1 LocalDate,LocalTime,LocalDateTime
1.实例化方法
public static void main(String[] args) throws ParseException {
System.out.println(LocalDate.now());
System.out.println(LocalTime.now());
System.out.println(LocalDateTime.now());
}
public static void main(String[] args) throws ParseException {
/* 通过of()方法可以构造出指定日期和时间 */
System.out.println(LocalDate.of(2023, 9, 12));
System.out.println(LocalTime.of(22, 30, 123));
}
此外还有很多方法:当天是当月的第几天,是当前周的第几天,加减几天等;
2.2 Instant
时间戳
2.3 DateTimeFormatter
public static void main(String[] args) throws ParseException {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime now = LocalDateTime.now();
/* 格式化: 日期、时间 -> 字符串 */
String format = dateTimeFormatter.format(now);
System.out.println(format);
/* 解析:字符串 -> 日期、时间 */
TemporalAccessor parse = dateTimeFormatter.parse("2023-09-12 22:30:12");
LocalDateTime from = LocalDateTime.from(parse);
System.out.println(from);
}
三、开发中常用注解
3.1 @DateTimeFormat
@DateTimeFormat
注解是由Spring提供的一个注解。是将一个日期字符串
转化为对应的Date
类型,主要处理前端时间类型与后端pojo对象中的成员变量进行数据绑定。