jdk1.8时间组件

jdk1.8时间组件


  • Instant
  • LocalData
  • LocalTime
  • LocalDateTime
  • Period
  • Duration

Instant

Instant本质上是一个数字时间戳


Instant now = Instant.now();//获取时间,默认是0时区
System.out.println("获取7时区时间:"+now.atOffset(ZoneOffset.ofHours(7)));
System.out.println("0时区时间:"+now);
System.out.println("毫秒:"+now.get(ChronoField.MILLI_OF_SECOND));
System.out.println("微秒,用毫秒乘以1000:"+now.get(ChronoField.MICRO_OF_SECOND));
System.out.println("纳秒,用毫秒数乘以1000000:"+now.get(ChronoField.NANO_OF_SECOND));
LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.now(), ZoneId.systemDefault());
System.out.println("当前时区时间"+localDateTime);

打印结果

获取7时区时间:2018-08-17T16:32:42.160+07:00
0时区时间:2018-08-17T09:32:42.160Z
毫秒:160
微秒,用毫秒乘以1000:160000
纳秒,用毫秒数乘以1000000:160000000
当前时区时间2018-08-17T17:32:42.162

LocalData

LocalData是获取当前日期,格式为:2018-08-17

LocalDate now = LocalDate.now();// 获得当前日期
System.out.println("当前日期:"+now.toString());
System.out.println("当前日期加一天:"+now.plusDays(1).toString());
System.out.println("当前日期减一天:"+now.minusDays(1).toString());
System.out.println("当前日期加一周:"+now.plusWeeks(1));
System.out.println("当前日期减一周:"+now.minusWeeks(1));
System.out.println("今年的第100天是几月几号:" + now.withDayOfYear(52));

// 字符串转日期
DateTimeFormatter strToDateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
TemporalAccessor dateTemporal = strToDateFormatter.parse("2018-06-21");
LocalDate date = LocalDate.from(dateTemporal);
System.out.println("字符串转为日期结果:"+date);
// 格式化日期
DateTimeFormatter dateToStrFormatter = DateTimeFormatter.ofPattern("yyyy:MM:dd");
String dateStr = dateToStrFormatter.format(now);
System.out.println("格式化日期:"+dateStr);

打印结果

当前日期:2018-08-17
当前日期加一天:2018-08-18
当前日期减一天:2018-08-16
当前日期加一周:2018-08-24
当前日期减一周:2018-08-10
今年的第100天是几月几号:2018-02-21
字符串转为日期结果:2018-06-21
格式化日期:2018:08:17

LocalTime

LocalTime是获取当前时分秒毫秒格式为:18:18:25.055

LocalTime localTime = LocalTime.now();
System.out.println("当前时间:" + localTime);
System.out.println("当前时间减5个小时:"+localTime.minusHours(5));
System.out.println("当前时间减5分钟:"+localTime.minusMinutes(5));
System.out.println("当前时间减20秒:"+localTime.minusSeconds(20));
System.out.println("当前时间减3纳秒:" +localTime.minusNanos(3));
System.out.println("当前时间加12个小时:" + localTime.plusHours(12));
System.out.println("当前时间加5分钟:"+localTime.plusMinutes(5));
System.out.println("当前时间加5秒:"+localTime.plusMinutes(5));
System.out.println("当前时间加5纳秒:"+localTime.plusMinutes(5));

打印结果

当前时间:18:18:25.055
当前时间减5个小时:13:18:25.055
当前时间减5分钟:18:13:25.055
当前时间减20秒:18:18:05.055
当前时间减3纳秒:18:18:25.054999997
当前时间加12个小时:06:18:25.055
当前时间加5分钟:18:23:25.055
当前时间加5秒:18:23:25.055
当前时间加5纳秒:18:23:25.055

LocalDateTime

LocalDateTime获取当前时间也有plus方法(plusDays()、plusMinutes() 等)和minus(minusDays()、minusMinutes等)方法

LocalDateTime now = LocalDateTime.now();// 获得当前日期时间
System.out.println("当前日期时间:");
DateTimeFormatter strToDateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
TemporalAccessor dateTemporal = strToDateFormatter.parse("2018-08-17 11:18:50");
LocalDate date = LocalDate.from(dateTemporal);
System.out.println(date);
// 格式化日期时间
DateTimeFormatter dateToStrFormatter = DateTimeFormatter.ofPattern("yyyy:MM:dd HH:mm:ss");
String dateStr = dateToStrFormatter.format(now);
System.out.println("格式化日期时间:"+dateStr);

打印结果

当前日期时间:2018-08-17T18:24:04.146
2018-08-17
格式化日期时间:2018:08:17 18:24:04

Duration

Duration可以用来比较两个日期时间间隔的秒以及纳秒数,如果纳秒太大可能无法打印

LocalDateTime start = LocalDateTime.now();
LocalDateTime end = start.plusNanos(5);
Duration duration = Duration.between(start, end);
System.out.println("间隔秒:" + duration.get(ChronoUnit.SECONDS));
System.out.println("间隔纳秒:" + duration.get(ChronoUnit.NANOS));

打印结果

间隔秒:0
间隔纳秒:5

Period

Period可以用来比较LocalDate类型相隔的天、月、年

LocalDate startDate = LocalDate.now();
LocalDate endDate = startDate.plusDays(1);
Period period = Period.between(startDate, endDate);
System.out.println("间隔的天数" + period.getDays());
System.out.println("间隔的月数:" + period.getMonths());
System.out.println("间隔的年数:" + period.getYears());

打印结果

间隔的天数1
间隔的月数:0
间隔的年数:0

猜你喜欢

转载自blog.csdn.net/DingKG/article/details/81782006