Java中的LocalTime及其示例
java.time.LocalTime类是Java 8中添加的新日期和时间API的一部分,该API表示ISO-8601日历系统中的时间,例如10:12:36. LocalTime类不存储或者表示日期或者时区。相反,它是对壁钟上本地时间的描述。
LocalTime类是不可变的,因此是线程安全的。由于已将其标记为最终的,因此无法进行扩展。
在这篇文章中,我们将看到一些示例,这些示例演示Java LocalTime类的用法。
创建LocalTime实例
LocalTime类没有任何公共构造函数来获取实例,我们将使用工厂方法来获取实例。
1.使用now()方法,我们可以从系统时钟的默认时区中获取当前时间。
LocalTime currentTime = LocalTime.now(); System.out.println(currentTime); //19:08:04.782387100
2.通过使用of()方法传递时,分,秒来获取LocalTime的实例。
LocalTime currentTime = LocalTime.of(18, 22, 32); System.out.println(currentTime); //18:22:32
请注意,of()方法已重载,因此我们可以传递所有四个参数(小时,分钟,秒,纳秒)或者仅传递三个(小时,分钟,秒)或者仅传递两个(小时,分钟)
的(整数小时,整数分钟)
的(整数小时,整数分钟,整数秒)
的(整数小时,整数分钟,整数秒,整数nanoOfSecond)
特定时区的本地时间
我们还可以通过传递时区ID从指定时区的系统时钟获取当前时间。
ZoneId zone1 = ZoneId.of("America/Los_Angeles"); ZoneId zone2 = ZoneId.of("Asia/Kolkata"); LocalTime time1 = LocalTime.now(zone1); LocalTime time2 = LocalTime.now(zone2); System.out.println(time1); //06:52:20.179414600 System.out.println(time2); //19:22:20.222512
从LocalTime获取小时,分钟,秒值
使用LocalTime类的getHour(),getMinute(),getSecond()和getNano()方法,我们可以分别获取小时,分钟,秒和纳秒级字段。
public class FormatDate { public static void main(String[] args) { LocalTime time = LocalTime.of(18, 22, 32); System.out.println("Hour- " + time.getHour()); System.out.println("Minute- " + time.getMinute()); System.out.println("Second- " + time.getSecond()); } }
输出:
Hour- 18 Minute- 22 Second- 32
格式化LocalTime
使用DateTimeFormatter,可以指定用于格式化LocalTime的模式。
public class FormatDate { public static void main(String[] args) { LocalTime time = LocalTime.of(18, 22, 32); DateTimeFormatter dtf = DateTimeFormatter.ofPattern("hh:mm:ss a"); System.out.println("Time- "+time.format(dtf)); dtf = DateTimeFormatter.ofPattern("HH:mm:ss"); System.out.println("Time- "+time.format(dtf)); } }
使用LocalTime进行时间计算
有一些方法可以从LocalTime添加或者减去小时,分钟,秒,纳秒。
minusHours(long hoursToSubtract)–返回此LocalTime的副本,其中减去指定的小时数。
minusMinutes(long minutesToSubtract)–返回此LocalTime的副本,其中减去指定的分钟数。
minusSeconds(long secondsToSubtract)–返回此LocalTime的副本,其中减去指定的秒数。
minusNanos(long nanosToSubtract)–返回此LocalTime的副本,其中减去指定的纳秒数。
plusHours(long hoursToAdd)–返回此LocalTime的副本,其中添加了指定的小时数。
plusMinutes(long minutesToAdd)–返回此LocalTime的副本,其中添加了指定的分钟数。
plusSeconds(long secondstoAdd)–返回此LocalTime的副本,其中添加了指定的秒数。
plusNanos(long nanosToAdd)–返回此LocalTime的副本,其中添加了指定的纳秒数。
public class FormatDate { public static void main(String[] args) { LocalTime time = LocalTime.of(20, 25, 45, 534); System.out.println("Time- " + time); System.out.println("Hour after subtraction- " + time.minusHours(2)); System.out.println("Minute after subtraction- " + time.minusMinutes(10)); System.out.println("Second after subtraction- " + time.minusSeconds(20)); System.out.println("NanoSecond after subtraction- " + time.minusNanos(100)); System.out.println("Hour after addition- " + time.plusHours(1)); System.out.println("Minute after addition- " + time.plusMinutes(15)); System.out.println("Second after addition- " + time.plusSeconds(25)); System.out.println("NanoSecond after addition- " + time.plusNanos(100)); } }
输出:
Time- 20:25:45.000000534 Hour after subtraction- 18:25:45.000000534 Minute after subtraction- 20:15:45.000000534 Second after subtraction- 20:25:25.000000534 NanoSecond after subtraction- 20:25:45.000000434 Hour after addition- 21:25:45.000000534 Minute after addition- 20:40:45.000000534 Second after addition- 20:26:10.000000534 NanoSecond after addition- 20:25:45.000000634
在Java中比较LocalTimes
为了比较两个LocalTime实例,有以下方法:
compareTo(LocalTime other)–将此时间与另一个时间进行比较。如果小于传递的LocalTime,则返回负值;如果大于,则返回正值。
isAfter(LocalTime other)–检查该时间是否在指定时间之后。
isBefore(LocalTime other)–检查该时间是否在指定时间之前。
public class FormatDate { public static void main(String[] args) { LocalTime time1 = LocalTime.of(20, 25, 45); LocalTime time2 = LocalTime.of(22, 18, 40); System.out.println(time1.compareTo(time2)); System.out.println(time2.compareTo(time1)); System.out.println(time1.isAfter(time2)); System.out.println(time1.isBefore(time2)); } }
输出:
-1 1 false true
将字符串转换为LocalTime
检查这篇文章中的String到LocalTime的转换在Java中将String转换为Date
将LocalTime转换为String
检查此帖子以将LocalTime转换为String将Java中的日期转换为String