JavaSE 常见时间日期

java.util包提供了Date类来封装当前的⽇期和时间

构造函数

//当前时间
Date()
//从1970年1⽉1⽇起的毫秒数作为参数
Date(long millisec)

常见方法

//返回⾃ 1970 年 1 ⽉ 1 ⽇ 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
long getTime( )
//调⽤此⽅法的Date对象在指定⽇期之后返回true,否则返回false。
boolean after(Date date)
//调⽤此⽅法的Date对象在指定⽇期之前返回true,否则返回false。
boolean before(Date date)

JDK1.8时间日期处理类

核心类

LocalDate:不包含具体时间的⽇期。
LocalTime:不含⽇期的时间。
LocalDateTime:包含了⽇期及时间。

LocalDate常用API

 LocalDate today = LocalDate.now();
 System.out.println("今天⽇期:" + today);
 //获取年,⽉,⽇,周⼏
 System.out.println("现在是哪年:"+today.getYear());
 System.out.println("现在是哪⽉:"+today.getMonth());
 System.out.println("现在是哪⽉(数字):"+today.getMonthValue());
 System.out.println("现在是⼏号:"+today.getDayOfMonth());
 System.out.println("现在是周⼏:"+today.getDayOfWeek());
 //加减年份, 加后返回的对象才是修改后的, 旧的依旧是旧的
 LocalDate changeDate = today.plusYears(1);
 System.out.println("加后是哪年:"+changeDate.getYear());
 System.out.println("旧的是哪年:"+today.getYear());
 //⽇期⽐较
 System.out.println("isAfter: "+changeDate.isAfter(today));
 //getYear() int 获取当前⽇期的年份
 //getMonth() Month 获取当前⽇期的⽉份对象
 //getMonthValue() int 获取当前⽇期是第⼏⽉
 //getDayOfWeek() DayOfWeek 表示该对象表示的⽇期是星期⼏
 //getDayOfMonth() int 表示该对象表示的⽇期是这个⽉第⼏天
 //getDayOfYear() int 表示该对象表示的⽇期是今年第⼏天
 //withYear(int year) LocalDate 修改当前对象的年份
 //withMonth(int month) LocalDate 修改当前对象的⽉份
 //withDayOfMonth(int dayOfMonth) LocalDate 修改当前对象在当⽉的⽇期
 //plusYears(long yearsToAdd) LocalDate 当前对象增加指定的年份数
 //plusMonths(long monthsToAdd) LocalDate 当前对象增加指定的⽉份数
 //plusWeeks(long weeksToAdd) LocalDate 当前对象增加指定的周数
 //plusDays(long daysToAdd) LocalDate 当前对象增加指定的天数
 //minusYears(long yearsToSubtract) LocalDate 当前对象减去指定的年数
 //minusMonths(long monthsToSubtract) LocalDate 当前对象减去注定的⽉数
 //minusWeeks(long weeksToSubtract) LocalDate 当前对象减去指定的周数
 //minusDays(long daysToSubtract) LocalDate 当前对象减去指定的天数
 //compareTo(ChronoLocalDate other) int ⽐较当前对象和other对象在时
间上的⼤⼩,返回值如果为正,则当前对象时间较晚,
 //isBefore(ChronoLocalDate other) boolean ⽐较当前对象⽇期是否在
 other对象⽇期之前
 //isAfter(ChronoLocalDate other) boolean ⽐较当前对象⽇期是否在
 other对象⽇期之后
 //isEqual(ChronoLocalDate other) boolean ⽐较两个⽇期对象是否相等

JDK1.8时间日期格式化

为什么要时间⽇期做格式化
  程序打印,或者⽹⻚显示时间⽇期格式,⽤户有不同的需求,则需要根据⼀定的规则进⾏格式化

常用占位符

y  四位数年份
M  ⽉
d  ⽇
h  时 在上午或下午 (1~12)
H  时 在⼀天中 (0~23)
m  分
s  秒
S  毫秒

JDK1.8之后,引入线程安全的日期与时间DateTimeFormatter

LocalDateTime ldt = LocalDateTime.now();
System.out.println(ldt);
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd
HH:mm:ss");
String ldtStr = dtf.format(ldt);
System.out.println(ldtStr);

获取指定的日期时间对象

LocalDateTime ldt = LocalDateTime.of(2020, 11, 11, 8, 20, 30);
System.out.println(ldt);

计算日期时间差

java.time.Duration

LocalDateTime today = LocalDateTime.now();
 System.out.println(today);
 LocalDateTime changeDate = LocalDateTime.of(2020,10,1,10,40,30);
 System.out.println(changeDate);
 Duration duration = Duration.between( today,changeDate);//第⼆个参数减第⼀
个参数
 System.out.println(duration.toDays());//两个时间差的天数
 System.out.println(duration.toHours());//两个时间差的⼩时数
 System.out.println(duration.toMinutes());//两个时间差的分钟数
 System.out.println(duration.toMillis());//两个时间差的毫秒数
 System.out.println(duration.toNanos());//两个时间差的纳秒数

 

posted @ 2020-07-31 23:22  陈彦斌  阅读(268)  评论(0编辑  收藏  举报