Java 8之新日期时间API笔记(二)LocalTime

java time Jul 5, 2018

前言:

上一篇我们介绍了LocalDate对日期的操作,接下来应该介绍LocalTime对时间的操作了。

LocalTime

表示的是时间,内部没有存储日期的数据。如果既想要时间,也想要日期,可以使用LocalDateTime。下一篇文章会介绍它。LocalTime也是线程安全的不可变对象。它是遵循ISO-8601标准的时间类,常见的格式例如:10:15:30。但是内部存储的精度达到了纳秒。我们来看看怎样操作它。

初始化方法

1.now方法,获取当前时间

LocalTime localTime = LocalTime.now();

2.of方法,根据参数初始化时间

LocalTime localTime = LocalTime.of(11,32, 32);

3.parse方法,根据传入的字符串初始化。

LocalTime localTime = LocalTime.parse("12:32:12");

至于parse方法传入字符串的格式是有限制的。具体我们来看下定义格式的代码

static {
        ISO_LOCAL_TIME = new DateTimeFormatterBuilder()
                .appendValue(HOUR_OF_DAY, 2)
                .appendLiteral(':')
                .appendValue(MINUTE_OF_HOUR, 2)
                .optionalStart()
                .appendLiteral(':')
                .appendValue(SECOND_OF_MINUTE, 2)
                .optionalStart()
                .appendFraction(NANO_OF_SECOND, 0, 9, true)
                .toFormatter(ResolverStyle.STRICT, null);
    }

根据代码我们可以发现传入的字符串必须是必须有小时和分钟,中间用冒号分隔。而且必须是两位。也就是02:02这种。秒和纳秒是可选的。

get方法

LocalTime提供了get方法获取Hour,Minute,Second和NanoSecond

修改LocalTime的方法

1.with方法

localTime = localTime.withHour(1); //把当前时间修改为1点其余不变
localTime = localTime.withMinute(23); //把当前分钟修改为23其余不变
localTime = localTime.withSecond(21); //修改当前秒数为21其余不变
localTime = localTime1.withNano(233); //修改纳秒为233其余不变

2.plus方法

localTime = localTime.plusHours(1); //加1小时
localTime = localTime.plusMinutes(2); //加1分钟
localTime = localTime.plusSeconds(30);//加30秒
localTime = localTime.plusNanos(40);//加40纳秒

3.minus方法

localTime = localTime.minusHours(1); 
localTime = localTime1.minusMinutes(23);
localTime = localTime1.minusSeconds(11);
localTime = localTime.minusNanos(232);

转化

1.转化成LocalDateTime

LocalDateTime localDateTime = localTime.atDate(localDate);  

2.获取今天的秒数

int seconds = localTime.toSecondOfDay();

比较

LocalTime提供了方便的比较方法

localTime1.compareTo(localTime2); return -1 locaTime1小于localTime2。 return 0 两个时间相等。 return 1 localTime1大于localTime2。
localTime.isBefore(localTime2);
localTime.isAfter(localTime2);
localTime.equal(localTime2);

总结

有了LocalTime方便了我们对时间进行操作,和LocalDate类似的API风格也让我们很容易使用。下一篇介绍可以同时操作日期和时间LocalDateTime类。

zzx

There is my place for writing,coding and reading