# Java `LocalTime`类

> 原文： [https://howtodoinjava.com/java/date-time/java-localtime/](https://howtodoinjava.com/java/date-time/java-localtime/)

[Java 8 中引入](https://howtodoinjava.com/java8/date-and-time-api-changes-in-java-8-lambda/)的`java.time.LocalTime`类，将没有日期或时区信息的本地时间对象**表示为**“小时-分-秒”成分。 它表示达到纳秒精度的时间，例如 `09:25:59.123456789`。

我们可以使用`LocalTime`实例来表示时间，而无需使用如墙上时钟所示的日期或时区参考。 例如，我们可以使用`LocalTime`表示`LocalTime`类，以捕获员工何时进入办公大楼以及何时离开。

注意，`LocalTime`实例是[**不可变的**](https://howtodoinjava.com/java/basics/how-to-make-a-java-class-immutable/)和[**线程安全**](https://howtodoinjava.com/java/multi-threading/what-is-thread-safety/)。

## 1\. `LocalTime`类声明

```java
public final class LocalTime
	extends Object
	implements Temporal, TemporalAdjuster, Comparable<LocalTime>, Serializable
{
	//class body
}

```

## 2\. 如何在 Java 中创建`LocalTime`

通常，我们将在两种情况下创建本地时间实例，即获取当前时间或为指定时间戳创建本地时间。

#### 2.1 获取当前本地时间

使用以下方法获取当前本地时间。

```java
LocalTime now = LocalTime.now();

```

#### 2.2 创建指定的本地时间

要创建具有特定小时，分钟和秒的本地时间，请使用以下方法。

```java
LocalTime ltObject1 = LocalTime.of(08, 20, 45);	

LocalTime ltObject2 = LocalTime.of(08, 20, 45, 123456789);

LocalTime ltObject3 = LocalTime.parse("08:20");

LocalTime ltObject4 = LocalTime.parse("08:20:45.123456789");

```

## 3\. 如何将字符串解析为`LocalTime`

`LocalTime`类具有两个重载的`parse()`方法，用于将字符串中的时间转换为本地时间实例。

```java
parse(CharSequence text)	//1

parse(CharSequence text, DateTimeFormatter formatter)	//2

```

*   如果字符串包含[`ISO_LOCAL_TIME`](https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html#ISO_LOCAL_TIME)模式中的时间，即`HH:mm:ss`，请使用第一种方法。 这是 Java 中本地时间的默认模式。
*   对于任何其他时间模式，我们都需要使用第二种方法，在该方法中，我们将时间作为字符串传递，并使用表示该时间字符串的模式的格式化器。

```java
//1 - default time pattern
String time = "08:20:45.123456789";
LocalTime localTimeObj = LocalTime.parse(time);

//2 - specific time pattern
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH.mm.ss.nnn");
String time = "08.20.45.123456789";
LocalTime localTimeObj = LocalTime.parse(time, formatter);

```

## 4\. 如何将`LocalTime`格式化为字符串

使用`LocalTime.format(DateTimeFormatter)`方法将本地时间格式化为所需的字符串表示形式。

```java
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH.mm");

LocalTime today = LocalTime.now();

String timeString = today.format(formatter);	//12.38

```

## 5\. 如何修改本地时间

`LocalTime`提供以下方法，可用于相对于可用本地时间实例获取新的本地时间实例。

*   `plusHours()`
*   `plusMinutes()`
*   `plusSeconds()`
*   `plusNanos()`
*   `minusHours()`
*   `minusMinutes()`
*   `minusSeconds()`
*   `minusNanos()`

```java
LocalTime now = LocalTime.now();

//3 hours later
LocalTime localTime1 = now.plusHours(3);	

//3 minutes earliar
LocalTime localTime2 = now.minusMinutes(3);

```

## 6\. 更多例子

[在`LocalTime`和`java.sql.Time`之间进行转换](https://howtodoinjava.com/java/date-time/localtime-to-sql-time/)

学习愉快！

参考： [`LocalTime` Java 文档](https://docs.oracle.com/javase/8/docs/api/java/time/LocalTime.html)