1.带时区的日期时间:ZoneId / ZonedDateTime
(1)ZoneId
| public void test1(){ |
| Set<String> zoneIds = ZoneId.getAvailableZoneIds(); |
| for (String zoneId : zoneIds) { |
| System.out.println(zoneId); |
| } |
| System.out.println(); |
| |
| LocalDateTime ldt = LocalDateTime.now(ZoneId.of("Asia/Tokyo")); |
| System.out.println(ldt); |
| } |
(2)ZonedDateTime
带时区的日期时间
| public void test2(){ |
| ZonedDateTime zdt = ZonedDateTime.now(); |
| System.out.println(zdt); |
| |
| ZonedDateTime zdt1 = ZonedDateTime.now(ZoneId.of("Asia/Tokyo")); |
| System.out.println(zdt1); |
| } |
2.时间间隔Duration
用于计算两个时间间隔,以秒和纳秒为基准。
方法 |
描述 |
between(Temporal start,Temporal end) |
静态方法,返回Duration对象,表示两个时间的间隔 |
getNano()、getSeconds |
返回时间间隔的纳秒数、返回时间间隔的秒数 |
toDays()、toHours()、toMinutes()、toMillis()、toNanos() |
返回时间间隔期间的天数、小时数、分钟数、毫秒数、纳秒数 |
| public void test3(){ |
| LocalTime time1 = LocalTime.now(); |
| LocalTime time2 = LocalTime.of(15, 23, 32); |
| |
| Duration duration = Duration.between(time1, time2); |
| System.out.println(duration); |
| System.out.println(duration.getSeconds()); |
| System.out.println(duration.getNano()); |
| |
| LocalDateTime dateTime1 = LocalDateTime.of(2016, 6, 12, 15, 23, 32); |
| LocalDateTime dateTime2 = LocalDateTime.of(2017, 6, 12, 15, 23, 32); |
| |
| Duration duration1 = Duration.between(dateTime1, dateTime2); |
| System.out.println(duration1.toDays()); |
| } |
3.日期间隔Period
用于计算两个
日期间隔,以年、月、日衡量。
方法 |
描述 |
between(LocalDate start,localDate end) |
静态方法,返回Period对象,表示两个本地日期的间隔 |
getYears()、getMonths()、getDays() |
返回此期间的年数、月数、天数 |
withYears(int years)、withMonths(int months)、withDays(int days) |
返回设置间隔指定年、月、日数以后的Period对象 |
| public void test4(){ |
| LocalDate date1 = LocalDate.now(); |
| LocalDate date2 = LocalDate.of(2028, 3, 18); |
| |
| Period period = Period.between(date1, date2); |
| System.out.println(period); |
| System.out.println(period.getYears()); |
| System.out.println(period.getMonths()); |
| System.out.println(period.getDays()); |
| |
| Period period1 = period.withYears(2); |
| System.out.println(period1); |
| } |
4.日期时间校正器:TemporalAdjuster
| public void test5(){ |
| |
| TemporalAdjuster adjuster = TemporalAdjusters.next(DayOfWeek.SUNDAY); |
| |
| LocalDateTime dateTime = LocalDateTime.now().with(adjuster); |
| System.out.println(dateTime); |
| |
| |
| LocalDate localDate = LocalDate.now().with(new TemporalAdjuster() { |
| @Override |
| public Temporal adjustInto(Temporal temporal) { |
| LocalDate date = (LocalDate) temporal; |
| if (date.getDayOfWeek().equals(DayOfWeek.FRIDAY)) { |
| return date.plusDays(3); |
| } else if (date.getDayOfWeek().equals(DayOfWeek.SATURDAY)) { |
| return date.plusDays(2); |
| } else { |
| return date.plusDays(1); |
| } |
| } |
| }); |
| System.out.println("下一个工作日是:"+localDate); |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本