Java SE 常用类:date日期
1、date日期
- java.util.Date
- public class Date extends Objectimplements Serializable, Cloneable, Comparable< Date >
Date
类表示特定的时刻,精度为毫秒。
1.1、构造器
- Date() 分配
Date
对象并对其进行初始化,使其表示分配时间,测量Date
到毫秒。
Date date = new Date();
System.out.println(date.toString());
- More ActionsDate(long date)分配 Date对象并初始化它以表示自标准基准时间(称为“纪元”)以来的指定毫秒数,即1970年1月1日00:00:00 GMT。
//有参构造,添加时间毫秒数,从1970年开始加
Date date1=new Date(1617761939308L);
System.out.println(date1);
1.2、常用方法
- boolean after(Date when) 测试此日期是否在指定日期之后。
- boolean before(Date when) 测试此日期是否在指定日期之前。
//比较对象是否是在指定时间后面
System.out.println(date.after(date1));
//比较对象是否是在指定时间前面
System.out.println(date.before(date1));
- Object clone() 返回此对象的副本。
//clone() 返回对象副本
System.out.println(date.clone());
- int compareTo(Date anotherDate) 比较两个日期的是否相同。
- boolean equals(Object obj) 比较两个相等的日期。
//比较对象是否是在指定时间
System.out.println(date.compareTo(date1));
System.out.println(date.equals(date2));
System.out.println(date.compareTo(date2));
- More ActionssetTime(long time) 将此 Dat对象设置为表示格林尼治标准时间1970年1月1日00:00:00之后的 time毫秒的时间点。
//将时间设置在1970年多少秒后面
date.setTime(1617761939308L);
System.out.println(date);
- toString() 将此
Date
对象转换为以下形式的String
:
System.out.println(date1.toString());
2、JDK8 Date类
-
JAVA8 新增系列时间日期API
-
优点:
- 线程安全
- 操作简单,效率高
-
LocalTime:代表时间,可以通过时、分、秒来构造
-
LocalDate:代表日期,可以通过年、月、日构造,并且年/月/日的值都是符合日常使用习惯的
-
LocalDateTime:表示日期和时间,可以通过年、月、日、时、分、秒来构造,也可以通过一个
-
LocalDate和LocalTime来构造。
-
格式化: DateTimeFormatter 类,它的使用也非常简单,调用静态方法 ofPattern 生成指定匹配格式
-
的实例;
2.1 常用方法
类 | 常见方法 |
---|---|
Year年 | now():今年 |
Month 月 | JANUARY:一月 FEBRUARY二月 |
LocalDate本地日期 | now():不包含时分秒的本时区的当前时间 of(年,月,日):构建本时区的时间 |
LocalDateTime 本地时间 | now():包含时分秒的本时区的当前时间 of(年,月,日,时,分,秒):构建本时区的时间 format() : 格式化为字符串 parse():转成日期 |
LocalTime:代表时间 | 可以通过时、分、秒来构造LocalTime.of(18,45,20); |
//今年 Year
System.out.println("今年"+Year.now());
System.out.println("指定年" + Year.of(2022));
//6月 Month
System.out.println("月份:"+Month.FEBRUARY);
//LocalDate 本地日期
//今天不包含时分秒
LocalDate today = LocalDate.now();
System.out.println("今天:"+today);
//您的生日
LocalDate yourBirthDate = LocalDate.of(1999, Month.JUNE, 15);
System.out.println("生日:"+yourBirthDate);
//此时此刻
LocalDateTime now = LocalDateTime.now();
System.out.println("现在:"+now);
//您的学习时间
LocalDateTime dateTime = LocalDateTime.of(2020, 2, 25, 12, 30,40);
System.out.println("时间:"+dateTime);
DateTimeFormatter 格式器
//模板转换器
SimpleDateFormat format = new SimpleDateFormat(); //默认格式
//日期对象转为字符串
System.out.println(format.format(new Date()));;
//字符串转为日期对象
System.out.println(format.parse("1988/4/7 上午10:01"));
//指定格式转换模板
SimpleDateFormat simple = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss SSS");
//日期对象转为字符串
System.out.println(simple.format(new Date()));;
//字符串转为日期对象
System.out.println(simple.parse("2021-04-07 10:07:59 184"));
//日期转换器
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
//格式化日期字符串
LocalDateTime now = LocalDateTime.now();
String nowStr = now.format(formatter);
//放入格式器
System.out.println(nowStr);
String dateStr= "2020-02-25 11:23:04";
//转成日期
LocalDateTime date= LocalDateTime.parse(dateStr, formatter);
//放入格式器
//获取日
System.out.println(date.getDayOfMonth());
2.2 间隔类
类 | 常见方法 |
---|---|
**Period **时期 | between():间隔 年月日(基于日期) |
**Duration ** 持续期间 | ofDays(天数):天 ofHours(小时数):时 ofMinutes(分钟数):分 ofSeconds(秒数):秒 基于时间 |
Instant 瞬间 | now():现在 plus():添加 minus():相减 |
ChronoUnit期量单位 | YEARS、MONTHS、DAYS、HOURS、MINUTES、SECONDS getDuration() :获取Duration between():间隔 |
LocalDate today = LocalDate.now();
LocalDate birthDate = LocalDate.of(1999, 3, 15);
//时期间隔 年月日
Period p = Period.between(birthDate, today); System.out.printf(p.getYears()+"年"+p.getMonths()+"d"+p.getDays()+"日");
LocalDate startDate = LocalDate.of(1993, 8, 19);
LocalDate endDate = LocalDate.of(1994, Month.JANUARY,16);
//期量单位 间隔
long between =ChronoUnit.YEARS.between(startDate, endDate);
System.out.println("两年之间的差 : " + between); //0 不是1不满一年不计算在内
between =ChronoUnit.MONTHS.between(startDate, endDate);
System.out.println("两月之间的差 : " + between); //4 不是5不满一月不计算在内
//瞬间
Instant inst1 = Instant.now(); Instant inst2 = inst1.minus(Duration.ofSeconds(10));
System.out.println("毫秒相隔 : " + Duration.between(inst1, inst2).toMillis());
System.out.println("秒相隔 : "+ Duration.between(inst1,inst2).getSeconds());