前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >日期计算

日期计算

原创
作者头像
张紫娃
修改2024-04-21 21:35:08
1540
修改2024-04-21 21:35:08
举报

获取时间

代码语言:javascript
复制
// 年
Assert.assertEquals(2019, LOCAL_DATE_TIME.getYear());
Assert.assertEquals(2019, OFFSET_DATE_TIME.getYear());
Assert.assertEquals(2019, ZONED_DATE_TIME.getYear());

// 月
Assert.assertEquals(Month.JULY, LOCAL_DATE_TIME.getMonth());
Assert.assertEquals(Month.JULY, OFFSET_DATE_TIME.getMonth());
Assert.assertEquals(Month.JULY, ZONED_DATE_TIME.getMonth());
Assert.assertEquals(7, LOCAL_DATE_TIME.getMonthValue());
Assert.assertEquals(7, OFFSET_DATE_TIME.getMonthValue());
Assert.assertEquals(7, ZONED_DATE_TIME.getMonthValue());

// 星期
Assert.assertEquals(DayOfWeek.SUNDAY, LOCAL_DATE_TIME.getDayOfWeek());
Assert.assertEquals(DayOfWeek.SUNDAY, OFFSET_DATE_TIME.getDayOfWeek());
Assert.assertEquals(DayOfWeek.SUNDAY, ZONED_DATE_TIME.getDayOfWeek());

// 日
Assert.assertEquals(7, LOCAL_DATE_TIME.getDayOfMonth());
Assert.assertEquals(7, OFFSET_DATE_TIME.getDayOfMonth());
Assert.assertEquals(7, ZONED_DATE_TIME.getDayOfMonth());

// 一年中的第几天
Assert.assertEquals(188, LOCAL_DATE_TIME.getDayOfYear());
Assert.assertEquals(188, OFFSET_DATE_TIME.getDayOfYear());
Assert.assertEquals(188, ZONED_DATE_TIME.getDayOfYear());

// 时
Assert.assertEquals(20, LOCAL_DATE_TIME.getHour());
Assert.assertEquals(20, ZONED_DATE_TIME.getHour());
Assert.assertEquals(20, OFFSET_DATE_TIME.getHour());

// 分
Assert.assertEquals(18, LOCAL_DATE_TIME.getMinute());
Assert.assertEquals(18, OFFSET_DATE_TIME.getMinute());
Assert.assertEquals(18, ZONED_DATE_TIME.getMinute());

// 秒
Assert.assertEquals(18, LOCAL_DATE_TIME.getSecond());
Assert.assertEquals(18, OFFSET_DATE_TIME.getSecond());
Assert.assertEquals(18, ZONED_DATE_TIME.getSecond());

// 纳秒
Assert.assertEquals(888, LOCAL_DATE_TIME.getNano());
Assert.assertEquals(888, ZONED_DATE_TIME.getNano());
Assert.assertEquals(888, OFFSET_DATE_TIME.getNano());

// 时间戳-秒
Assert.assertEquals(1562530698L, LOCAL_DATE_TIME.toEpochSecond(ZoneOffset.ofHours(0))); // 当前localDateTime视为0时区的时间、去获取时间戳
Assert.assertEquals(1562498298L, LOCAL_DATE_TIME.toEpochSecond(ZoneOffset.ofHours(9))); // 当前localDateTime视为东9区的时间、去获取时间戳
Assert.assertEquals(1562498298L, ZONED_DATE_TIME.toEpochSecond());                      // 基于ZONED_DATE_TIME时区信息、去获取时间戳
Assert.assertEquals(1562498298L, OFFSET_DATE_TIME.toEpochSecond());                     // 基于OFFSET_DATE_TIME时区信息、去获取时间戳

// 时间戳-毫秒
Assert.assertEquals(1562530698000L, LOCAL_DATE_TIME.toInstant(ZoneOffset.ofHours(0)).toEpochMilli());
Assert.assertEquals(1562498298000L, LOCAL_DATE_TIME.toInstant(ZoneOffset.ofHours(9)).toEpochMilli());
Assert.assertEquals(1562498298000L, ZONED_DATE_TIME.toInstant().toEpochMilli());
Assert.assertEquals(1562498298000L, OFFSET_DATE_TIME.toInstant().toEpochMilli());

特殊时间点

代码语言:javascript
复制
System.out.println(LocalDateTime.MIN); // -999999999-01-01T00:00
System.out.println(LocalDateTime.MAX); // +999999999-12-31T23:59:59.999999999

System.out.println(OffsetDateTime.MIN); // -999999999-01-01T00:00+18:00
System.out.println(OffsetDateTime.MAX); // +999999999-12-31T23:59:59.999999999-18:00

//System.out.println(ZonedDateTime.MIN);不存在
//System.out.println(ZonedDateTime.MAX);不存在

LOCAL_DATE_TIME计算时间

代码语言:javascript
复制
LocalDateTime LOCAL_DATE_TIME = LocalDateTime.of(2019, 7, 7, 20, 18, 18, 888);

System.out.println(LOCAL_DATE_TIME);                            // 2019-07-07T20:18:18.000000888
System.out.println(LOCAL_DATE_TIME.plusDays(3));                // 2019-07-10T20:18:18.000000888
System.out.println(LOCAL_DATE_TIME.plusHours(-3));              // 2019-07-07T17:18:18.000000888
System.out.println(LOCAL_DATE_TIME.minusMinutes(3));            // 2019-07-07T20:15:18.000000888
System.out.println(LOCAL_DATE_TIME.plus(1, ChronoUnit.WEEKS));  // 2019-07-14T20:18:18.000000888
System.out.println(LOCAL_DATE_TIME.minus(1, ChronoUnit.YEARS)); // 2018-07-07T20:18:18.000000888


LocalDateTime after = LOCAL_DATE_TIME.plusDays(3).plusHours(-3);
after = after.plusHours(-3);

// 计算时间差
Period period = Period.between(LOCAL_DATE_TIME.toLocalDate(), after.toLocalDate());
System.out.println("相差天数:" + period.getDays()); // 3

Period period2 = Period.between(after.toLocalDate(), LOCAL_DATE_TIME.toLocalDate());
System.out.println("相差天数:" + period2.getDays()); // -3

Duration duration = Duration.between(LOCAL_DATE_TIME.toLocalTime(), after.toLocalTime());
System.out.println("相差小时数:" + duration.toHours()); // -6

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 获取时间
  • 特殊时间点
  • LOCAL_DATE_TIME计算时间
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档