java8常用类及其使用

  1. 时间戳指的是秒数,而不是毫秒数
Instant: 表示时间线上的一个点,参考点是标准的Java纪元(epoch),即1970-01-01T00:00:00Z(1970年1月1日00:00 GMT)
  • Duration对象代表时间轴上的两个时间点(Instant)之间经过的时间量。例如,如果要计算一段时间运行所需要的时间,可以使用Duration对象的between()方法
Instant begin = Instant.now();
Instant end = Instant.now();
System.out.println(begin);
System.out.println(Duration.between(begin,end).toNanos());

输出:
2019-11-07T09:51:31.594Z
0
LocalDate: 日期值对象如 2019-09-22
LocalTime:时间值对象如 21:25:36
LocalDateTime:日期+时间值对象
ZoneId:时区
ZonedDateTime:日期+时间+时区值对象
// 可以使用 of 方法构建它们的实例,如下面创建了一个 2019-9-22 21:42:59 东八区 的时间对象 
LocalDate localDate = LocalDate.of(2019, Month.SEPTEMBER, 22);
LocalTime localTime = LocalTime.of(21, 42, 59);
LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime);
ZonedDateTime zonedDateTime = ZonedDateTime.of(localDateTime, ZoneId.systemDefault());

// 获取现在的时间,这是一个静态方法
LocalDate now = LocalDate.now();

// 每个实例可以获取它们的 part 信息,如获取年 
int year = localDate.getYear();

// 可以修改 part 信息,这将返回一个新对象,如增加一年
LocalDate localDatePlus = localDate.plusYears(1);

// 设置 part 信息,也会返回新的对象,如设置为 2017 年 
LocalDate localDateWithYear = localDate.withYear(2017);

// 比较两个日期 isAfter,isBefore
boolean after = localDate.isAfter(LocalDate.now());

// 格式化日期时间
// yyyy-MM-dd
System.out.println(now.format(DateTimeFormatter.ISO_DATE));
// yyyy-MM-ddTHH:mm:ss
System.out.println(now.format(DateTimeFormatter.ISO_DATE_TIME));
// yyyy-MM-dd HH:mm:ss
System.out.println(now.format(DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM)));

// 日期解析 
System.out.println(LocalDate.parse("2019-09-22"));
System.out.println(LocalDateTime.parse("2019-09-22T21:05:22"));
System.out.println(LocalDateTime.parse("2019-09-22 21:05:22",DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM)));
//4.3.2.3 ZoneId 用来操作时区,它提供了获取所有时区和本地时区的方法
ZoneId zoneId = ZoneId.systemDefault();
Set<String> availableZoneIds = ZoneId.getAvailableZoneIds();
//4.3.2.4 Period,Duration 可以视为一组,用于计算时间间隔
// 创建一个两周的间隔
Period periodWeeks = Period.ofWeeks(2);

// 一年三个月零二天的间隔
Period custom = Period.of(1, 3, 2);

// 一天的时长
Duration duration = Duration.ofDays(1);

// 计算2015/6/16 号到现在 2019/09/22 过了多久,它这个把间隔分到每个 part 了
LocalDate now = LocalDate.now();
LocalDate customDate = LocalDate.of(2015, 6, 16);
Period between = Period.between(customDate, now);

// 结果为 4:3:6 即过去了 4年3个月6天了
System.out.println(between.getYears()+":"+between.getMonths()+":"+between.getDays());

// 比较两个瞬时的时间间隔 
Instant begin = Instant.now();
Instant end = Instant.now();
Duration.between(begin,end);

// 同样可以修改 part 信息和设置 part 信息,都是返回新的对象来表示设置过的值,原来的对象不变
Period plusDays = between.plusDays(1);
Period withDays = between.withDays(4);

DateTimeFormatter:用于日期时间的格式化
Period:用于计算日期间隔
Duration:用于计算时间间隔

base64

// 编码
final String encoded = Base64.getEncoder().encodeToString( text.getBytes( StandardCharsets.UTF_8 ) );
// 解码
final String decoded = new String( Base64.getDecoder().decode( encoded ),StandardCharsets.UTF_8 );

LocalData时间相关知识(计算、时间戳等)

LocalDate today = LocalDate.now();
//检查当前年是否为闰年
System.out.println(today.getYear() + "是闰年吗?" + today.isLeapYear());

//当前时间
LocalTime time = LocalTime.now();
System.out.println(time);

//当前日期时间
LocalDateTime current = LocalDateTime.now();
System.out.println(current);

//时间戳
Instant timeStamp = Instant.now();
System.out.println(timeStamp);

//日期加减操作
System.out.println("10天后是:" + today.plusDays(10));
System.out.println("3周后是:" + today.plusWeeks(3));
System.out.println("15个月后是:" + today.plusMonths(15));
System.out.println("5年后是:" + today.plusYears(5));

System.out.println("8天前是:" + today.minusDays(8));
System.out.println("4周前是:" + today.minusWeeks(4));
System.out.println("9个月前是:" + today.minusMonths(19));
System.out.println("3年前是:" + today.minusYears(3));

//日期格式化
System.out.println(today.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")));
System.out.println(current.format(DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH:mm:ss")));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值