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 @   陈彦斌  阅读(274)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
历史上的今天:
2019-07-31 ASP.Net MVC 路由及路由调试工具RouteDebug
2019-07-31 ASP.Net MVC过滤器
2019-07-31 Oracle 去重后排序
点击右上角即可分享
微信分享提示
主题色彩