栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java Duration类和Period类

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java Duration类和Period类

Duration 

在JDK8中,可以使用java.time.Duration来计算时间时间差异,通过秒和纳秒相结合来描述一个时间量,最高精度是纳秒。

Duration类通过秒和纳秒相结合来描述一个时间量,最高精度是纳秒。时间量可以为正也可以为负,比如1天(86400秒0纳秒)、-1天(-86400秒0纳秒)、1年(31556952秒0纳秒)、1毫秒(0秒1000000纳秒)等。

创建方法

通过时间单位创建:

ofDays(), ofHours(), ofMillis(), ofMinutes(), ofNanos(), ofSeconds()

eg.

Duration fromDays = Duration.ofDays(1);

通过LocalDateTime或LocalTime

LocalDateTime start = LocalDateTime.of(2022, 1, 1, 8, 0, 0);

LocalDateTime end = LocalDateTime.of(2022, 1, 2, 8, 30, 30);

Duration duration = Duration.between(start, end);

解析方法

Duration fromChar1 = Duration.parse("P1DT1H10M10.5S");

Duration fromChar2 = Duration.parse("PT10M");

格式说明:

P:开始标记

1Y:一年

2M:两个月

10D:十天

T:日期和时间的分割标记

2H:两个小时

30M:三十分钟

15S:15.02秒

1."P", "D", "H", "M" 和 "S"可以是大写或者小写(建议大写)

2.可以用“-”表示负数

比较方法

Instant start = Instant.parse("2017-10-03T10:15:30.00Z");

Instant end = Instant.parse("2017-10-03T10:16:30.00Z");

  

// start - end        

Duration duration = Duration.between(start, end);

  

// 任何一个时间单元为负数,则返回true。true:end早于start

duration.isNegative();

  

Duration.between(start, end).getSeconds();

Duration.between(start, end).getNano();

增减方法

plusX()、minusX()

X表示days, hours, millis, minutes, nanos 或 seconds

Duration duration = Duration.ofHours(2);

Duration newDuration = duration.plus(33, ChronoUnit.SECONDS);

转换单位

可以用getX来获得指定位置的值,因为Duration是由秒和纳秒组成,所以只能获得秒和纳秒:

Duration duration = Duration.ofHours(2);

  

duration.getSeconds();  //7200

duration.getNano();     //

Period

Period类通过年、月、日相结合来描述一个时间量,最高精度是天。时间量可以为正也可以为负,例如2年(2年0个月0天)、3个月(0年3个月0天)、4天(0年0月4天)等。

创建方法

通过时间单位创建:

Period fromUnits = Period.of(3, 10, 10);

Period fromDays = Period.ofDays(50);

Period fromMonths = Period.ofMonths(5);

Period fromYears = Period.ofYears(10);

Period fromWeeks = Period.ofWeeks(40);  //280天

通过LocalDate创建:

LocalDate startDate = LocalDate.of(2015, 2, 20);

LocalDate endDate = LocalDate.of(2017, 1, 15);

// startDate减endDate

Period period = Period.between(startDate, endDate);

解析方法

格式1:“PnYnMnWnD”

Period period = Period.parse("P2Y");       //2年

Period period = Period.parse("P2Y3M5D");   //2年3月5天

Period period = Period.parse("P1Y2M3W4D"); // 1年2月3周4天。即:1年2月25天

说明:

P:开始符,表示period(即:表示年月日);

Y:year;

M:month;

W:week;

D:day

P, Y, M, W, D都可以用大写或者小写。

获得年月日

period.getYears();

period.getMonths();

period.getDays();

比较方法

LocalDate startDate = LocalDate.of(2015, 2, 20);

LocalDate endDate = LocalDate.of(2017, 1, 15);

// startDate减endDate

Period period = Period.between(startDate, endDate);

// 任何一个时间单元为负数,则返回true。true:endDate早于startDate

period.isNegative()

增减方法

Period period = Period.parse("P2Y3M5D");

period.plusDays(50);

period.minusMonths(2);

转换单位

Period period = Period.parse("P1Y2M3D");

period.toTotalMonths(); // 14

取值方法

Period period = Period.parse("P1Y2M3D");

period.getYears();  // 1

period.getMonths(); // 2

period.getDays();   // 3

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/993045.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号