java时间区间类

前言

在jdk1.8以后,对表示日期时间的类型进行了重新分类,这里出现了2个新的类,Duraction 和Period

Duraction表示:时间的区间,用来度量秒和纳秒之间的时间值

Period表示:一段时间的区间,用来度量年月日和几天之间的时间值

一、Period

1、获取对象

static Period   between(LocalDate startDateInclusive, LocalDate endDateExclusive)
static Period   from(TemporalAmount amount)
static Period   of(int years, int months, int days)
static Period   ofDays(int days)
static Period   ofMonths(int months)
static Period   ofWeeks(int weeks)
static Period   ofYears(int years)
static Period   parse(CharSequence text)
2、对象信息获取
long    get(TemporalUnit unit)
int     getDays()
int     getMonths()
List<TemporalUnit>  getUnits()
int getYears()
3、对象统计
long    toTotalMonths()
4、信息判断
boolean isNegative()//是否是负数
boolean isZero()//是否是0
5、计算
//加
Period  plus(TemporalAmount amountToAdd)
Period  plusDays(long daysToAdd)
Period  plusMonths(long monthsToAdd)
Period  plusYears(long yearsToAdd)

//减
Period  minus(TemporalAmount amountToSubtract)
Period  minusDays(long daysToSubtract)
Period  minusMonths(long monthsToSubtract)
Period  minusYears(long yearsToSubtract)

//乘
Period  multipliedBy(int scalar)
4、自定义
Period withDays(int days)//创建一个新的Period,除了天数自定义,其他的引用其创建的对象的值
Period withMonths(int months)//创建一个新的Period,除了月数自定义,其他的引用其创建的对象的值
Period withYears(int years)//创建一个新的Period,除了年数自定义,其他的引用其创建的对象的值
Period negated()//取其相反数
Period normalized()//一个基于此Period的期间,超额月份标准化为年,但不会维护天数

二、Duration

1、返回对象
static Duration between(Temporal startInclusive, Temporal endExclusive)
static Duration from(TemporalAmount amount)
static Duration of(long amount, TemporalUnit unit)
static Duration ofDays(long days)
static Duration ofHours(long hours)
static Duration ofMillis(long millis)
static Duration ofMinutes(long minutes)
static Duration ofNanos(long nanos)
static Duration ofSeconds(long seconds)
static Duration ofSeconds(long seconds, long nanoAdjustment)
static Duration parse(CharSequence text)

案例

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

Duration duration = Duration.between(start, end);
System.out.println(duration);//PT1M
System.out.println(duration.getSeconds());//60
2、Duration对象信息获取
int     getNano()
long    getSeconds()
long    get(TemporalUnit unit)
List<TemporalUnit>  getUnits()
3、对象统计
long    toDays()
long    toHours()
long    toMillis()
long    toMinutes()
long    toNanos()

问题1、toNanos() 与 getNano() 不同

toNanos() 获得的是 Duration 整个时间共有多少纳秒,
而 getNano() 只是获得这段时间中小于一秒的部分。

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

Duration duration = Duration.between(start, end);
System.out.println(duration.getNano());//0
System.out.println(duration.toNanos());//60000000000
4、对象判断
boolean isNegative()//是否是负数(不包括0)
boolean isZero()//是否是0
int compareTo(Duration otherDuration)
5、计算
//加
Duration    plus(Duration duration)
Duration    plus(long amountToAdd, TemporalUnit unit)
Duration    plusDays(long daysToAdd)
Duration    plusHours(long hoursToAdd)
Duration    plusMillis(long millisToAdd)
Duration    plusMinutes(long minutesToAdd)
Duration    plusNanos(long nanosToAdd)
Duration    plusSeconds(long secondsToAdd)
//减
Duration    minus(Duration duration)
Duration    minus(long amountToSubtract, TemporalUnit unit)
Duration    minusDays(long daysToSubtract)
Duration    minusHours(long hoursToSubtract)
Duration    minusMillis(long millisToSubtract)
Duration    minusMinutes(long minutesToSubtract)
Duration    minusNanos(long nanosToSubtract)
Duration    minusSeconds(long secondsToSubtract)
//乘
Duration    multipliedBy(long multiplicand)
//除
Duration    dividedBy(long divisor)

6、自定义
Duration    abs()//取绝对值
Duration    negated()//取其相反数
Duration    withNanos(int nanoOfSecond)//创建一个新的Duration其seconds部分是我们自定义的,nanos部分是使用原来的

Duration    withSeconds(long seconds)//创建一个新的Duration,其seconds部分是原来的,nanos部分是我们自定义的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值