Java中的LocalTime及其示例

时间:2020-01-09 10:35:16  来源:igfitidea点击:

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