Java 8 LocalTime时间处理类使用示例教程

x33g5p2x  于2021-08-22 转载在 Java  
字(8.9k)|赞(0)|评价(0)|浏览(507)

LocalTime类与其他名称以Local为前缀的类相似,但只处理时间。这个类对于表示基于人类的时间很有用,比如电影时间,或者本地图书馆的开馆和闭馆时间。
java.time.LocalTime类是一个不可变的类,它表示一个没有时区信息的时间,如'28:28:38.111'。

在这篇文章中,我们将结合实例讨论LocalTime类的重要API。
为了更好地理解,让我们把方法分类为它们的用法,并通过例子来解释。

LocalTime类方法/应用程序接口

1. 创建一个LocalTime对象的方法

  • static LocalTime now() - 从默认时区的系统时钟中获取当前时间。
  • static LocalTime now(Clock clock) - 从指定的时钟获取当前时间。
  • static LocalTime now(ZoneId zone) - 从指定时区的系统时钟获取当前时间。

2. 从本地时间获取小时、分钟、秒的方法

  • int getHour() - 获得每天的小时字段。
  • int getMinute() - 获得小时中的分钟字段。
  • int getNano() - 获得秒的纳米字段。
  • int getSecond() - 获得分钟内的秒字段。

3. 向LocalTime添加或减去小时、分钟和秒的方法

  • LocalTime plusHours(long hoursToAdd) - 返回该LocalTime的副本,并增加指定的小时数。
  • LocalTime plusMinutes(long minutesToAdd) - 返回此LocalTime的副本,并添加指定的分钟数。
  • LocalTime plusNanos(long nanosToAdd) - 返回此LocalTime的副本,并添加指定的纳秒数。
  • LocalTime plusSeconds(long secondstoAdd) - 返回此LocalTime的副本,并添加指定的秒数。
  • LocalTime minusHours(long hoursToSubtract) - 返回此LocalTime的副本,并减去指定的小时数。
  • LocalTime minusMinutes(long minutesToSubtract) - 返回此LocalTime的副本,并减去指定的分钟数。
  • LocalTime minusNanos(long nanosToSubtract) - 返回此LocalTime的副本,并减去指定的纳秒数。
  • LocalTime minusSeconds(long secondsToSubtract) - 返回此LocalTime的副本,并减去指定的秒数。

4. 在Java中比较LocalTime对象的方法

  • int compareTo(LocalTime other) - 将此时间与另一时间相比较。
  • boolean isAfter(LocalTime other) - 检查这个时间是否在指定时间之后。
  • boolean isBefore(LocalTime other) - 检查此时间是否在指定时间之前。

5. 在java中把字符串转换成本地时间的方法

  • static LocalTime parse(CharSequence text) - 从一个文本字符串(如10:15)中获取一个LocalTime的实例。
  • static LocalTime parse(CharSequence text, DateTimeFormatter formatter) - 使用特定的格式从文本字符串中获得一个LocalTime的实例。

6. 在java中将LocalTime转换为String的方法

  • String format(DateTimeFormatter formatter) - 使用指定的格式化器对这个时间进行格式化。
  • 参考:所有的方法描述都可以在LocalTime JavaDoc上找到。
    让我们用例子来讨论上面的每个方法。

1. 创建当前时间和特定时间的LocalTime方法

LocalTime类为当前时间和特定时间对象分别提供了以下API。

  • static LocalTime now() - 从默认时区的系统时钟中获取当前时间。
  • static LocalTime now(Clock clock) - 从指定的时钟获取当前时间。
  • static LocalTime now(ZoneId zone) - 从指定时区的系统时钟中获取当前时间。
import java.time.Clock;
import java.time.LocalTime;
import java.time.ZoneId;

//*/*
/* Program to demonstrate LocalTime Class APIs.
/* @author javaguides.net
/*
/*/
public class LocalTimeExample {
 
    public static void main(String[] args) {
        createLocalTime();
    }
    private static void createLocalTime() {
       // Current Time
       LocalTime localTime = LocalTime.now();
       System.out.println(localTime);

       // Specific Time
       LocalTime localTime2 = LocalTime.of(4, 30, 45);
       System.out.println(localTime2);
  
       LocalTime localTime3 = LocalTime.now(Clock.systemDefaultZone());
       System.out.println(localTime3);
  
       LocalTime localTime4 = LocalTime.now(Clock.system(ZoneId.of("Indian/Cocos")));
       System.out.println(localTime4);
    }
}

输出。

17:38:35.349
04:30:45
17:38:35.350
18:38:35.350

2. LocalTime方法从LocalTime获取小时、分钟、秒

LocalTime类提供以下API,从LocalTime中获取小时、分钟、秒。

  • int getHour() - 获取一天中的小时字段。
  • int getMinute() - 获取小时中的分钟字段。
  • int getNano() - 获得秒的纳数字段。
  • int getSecond() - 获得分钟内的秒字段。
import java.time.LocalTime;

//*/*
/* Program to demonstrate LocalTime Class APIs.
/* @author javaguides.net
/*
/*/
public class LocalTimeExample {
 
    public static void main(String[] args) {
        getHourMinuteSecondfromLocalTime();
    }

    private static void getHourMinuteSecondfromLocalTime() {
        LocalTime localTime = LocalTime.now();
        System.out.println("Gets the hour-of-day field : " + localTime.getHour());
        System.out.println("Gets the minute-of-hour field : " + localTime.getMinute());
        System.out.println("Gets the second-of-minute field : " + localTime.getSecond());
       System.out.println("Gets the nano-of-second field : " + localTime.getNano());
    }
}

输出。

Gets the hour-of-day field : 17
Gets the minute-of-hour field : 40
Gets the second-of-minute field : 30
Gets the nano-of-second field : 182000000

3. 向LocalTime添加或减去小时、分钟和秒的方法

LocalTime类提供以下API,用于在LocalTime中添加或减去小时、分钟和秒。

  • LocalTime plusHours(long hoursToAdd) - 返回该LocalTime的副本,并添加指定的小时数。
  • LocalTime plusMinutes(long minutesToAdd) - 返回此LocalTime的副本,并添加指定的分钟数。
  • LocalTime plusNanos(long nanosToAdd) - 返回此LocalTime的副本,并添加指定的纳秒数。
  • LocalTime plusSeconds(long secondstoAdd) - 返回此LocalTime的副本,并添加指定的秒数。
  • LocalTime minusHours(long hoursToSubtract) - 返回此LocalTime的副本,并减去指定的小时数。
  • LocalTime minusMinutes(long minutesToSubtract) - 返回此LocalTime的副本,并减去指定的分钟数。
  • LocalTime minusNanos(long nanosToSubtract) - 返回此LocalTime的副本,并减去指定的纳秒数。
  • LocalTime minusSeconds(long secondsToSubtract) - 返回此LocalTime的副本,并减去指定的秒数。
import java.time.LocalTime;

//*/*
/* Program to demonstrate LocalTime Class APIs.
/* @author javaguides.net
/*
/*/
public class LocalTimeExample {
 
    public static void main(String[] args) {
       addorSubtractHoursMinutesAndSecondstoLocalTime();
    }

    private static void addorSubtractHoursMinutesAndSecondstoLocalTime() {
        LocalTime localTime = LocalTime.now();
        System.out.println("Current Time : " + localTime);

        // LocalTime's plus methods
        System.out.println("Addition of Hours : " + localTime.plusHours(2));
        System.out.println("Addition of Minutes : " + localTime.plusMinutes(30));
        System.out.println("Addition of Seconds : " + localTime.plusSeconds(20));
        System.out.println("Addition of Nanos : " + localTime.plusNanos(60000));

        // LocalTime's minus methods
        System.out.println("Subtraction  of Hours : " + localTime.minusHours(2));
        System.out.println("Subtraction  of Minutes : " + localTime.minusMinutes(30));
        System.out.println("Subtraction  of Seconds : " + localTime.minusSeconds(20));
        System.out.println("Subtraction  of Nanos : " + localTime.minusNanos(60000));
    }
}

输出。

Current Time : 17:41:55.127
Addition of Hours : 19:41:55.127
Addition of Minutes : 18:11:55.127
Addition of Seconds : 17:42:15.127
Addition of Nanos : 17:41:55.127060
Subtraction  of Hours : 15:41:55.127
Subtraction  of Minutes : 17:11:55.127
Subtraction  of Seconds : 17:41:35.127
Subtraction  of Nanos : 17:41:55.126940

4. 在Java中比较LocalTime对象的方法

LocalTime类提供了以下API来比较Java中的LocalTime对象。

  • int compareTo(LocalTime other) - 将此时间与另一时间相比较。
  • boolean isAfter(LocalTime other) - 检查这个时间是否在指定时间之后。
  • boolean isBefore(LocalTime other) - 检查这个时间是否在指定时间之前。
import java.time.LocalTime;

//*/*
/* Program to demonstrate LocalTime Class APIs.
/* @author javaguides.net
/*
/*/
public class LocalTimeExample {
 
    public static void main(String[] args) {
        compareLocalTimeObjects();
    }

    private static void compareLocalTimeObjects() {
        LocalTime localTime1 = LocalTime.of(9, 10, 50);
        LocalTime localTime2 = LocalTime.of(9, 10, 50);
        LocalTime localTime3 = LocalTime.of(11, 45, 20);
  
        // compareTo() example
        if (localTime1.compareTo(localTime2) == 0) {
            System.out.println("localTime1 and localTime2 are equal");
        } else {
            System.out.println("localTime1 and localTime2 are not equal");
        }

        // isBefore() example
        if (localTime2.isBefore(localTime3)) {
             System.out.println("localTime2 comes before localTime3");
        }

        // isAfter() example
        if (localTime3.isAfter(localTime1)) {
            System.out.println("localTime3 comes after localTime1");
        }
    }
}

输出。

localTime1 and localTime2 are equal
localTime2 comes before localTime3
localTime3 comes after localTime1

5. 在java中将字符串转换为LocalTime的方法

LocalTime类提供了以下API,用于将字符串转换为java中的LocalTime。

  • static LocalTime parse(CharSequence text) - 从文本字符串(如10:15)中获取一个LocalTime的实例。
  • static LocalTime parse(CharSequence text, DateTimeFormatter formatter) - 使用特定的格式从文本字符串中获得一个LocalTime的实例。
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

//*/*
/* Program to demonstrate LocalTime Class APIs.
/* @author javaguides.net
/*
/*/
public class LocalTimeExample {
 
    public static void main(String[] args) {
        convertStringToLocalTime();
    }

    private static void convertStringToLocalTime() {
        LocalTime isoTime = LocalTime.parse("10:15:30", DateTimeFormatter.ISO_LOCAL_TIME);
        System.out.println(isoTime);

        // hour-of-day (0-23)
        LocalTime localTime = LocalTime.parse("22:45:30", DateTimeFormatter.ofPattern("HH:mm:ss"));
        System.out.println(localTime);

        // clock-hour-of-am-pm (1-24)
        LocalTime localTime2 = LocalTime.parse("22:45:30", DateTimeFormatter.ofPattern("kk:mm:ss"));
        System.out.println(localTime2);

        // clock-hour-of-am-pm (1-12)
        LocalTime localTime3 = LocalTime.parse("10:45:30 PM", DateTimeFormatter.ofPattern("hh:mm:ss a"));
        System.out.println(localTime3);

        // hour-of-am-pm (0-11)
        LocalTime localTime4 = LocalTime.parse("10:45:30 AM", DateTimeFormatter.ofPattern("KK:mm:ss a"));
        System.out.println(localTime4);
    }
}

输出。

10:15:30
22:45:30
22:45:30
22:45:30
10:45:30

6. 在java中将LocalTime转换为字符串的方法

LocalTime类提供了以下API,可以在java中把LocalTime转换为String。

  • String format(DateTimeFormatter formatter) - 使用指定的格式化器对该时间进行格式化。
import java.time.LocalTime;
import java.time.format.DateTimeFormatter;

//*/*
/* Program to demonstrate LocalTime Class APIs.
/* @author javaguides.net
/*
/*/
public class LocalTimeExample {
 
    public static void main(String[] args) {
        convertLocalTimeToString();
    }

    private static void convertLocalTimeToString(){
        LocalTime localTime = LocalTime.now();

       // ISO Format
       DateTimeFormatter timeFormatter = DateTimeFormatter.ISO_LOCAL_TIME;
       System.out.println(localTime.format(timeFormatter));

       // hour-of-day (0-23)
       DateTimeFormatter timeFormatter1 = DateTimeFormatter
             .ofPattern("HH:mm:ss");
       System.out.println(localTime.format(timeFormatter1));

       // clock-hour-of-am-pm (1-24)
       DateTimeFormatter timeFormatter2 = DateTimeFormatter
             .ofPattern("kk:mm:ss");
       System.out.println(localTime.format(timeFormatter2));

       // clock-hour-of-am-pm (1-12)
       DateTimeFormatter timeFormatter3 = DateTimeFormatter
             .ofPattern("hh:mm:ss a");
       System.out.println(localTime.format(timeFormatter3));

       // hour-of-am-pm (0-11)
       DateTimeFormatter timeFormatter4 = DateTimeFormatter
             .ofPattern("KK:mm:ss a");
       System.out.println(localTime.format(timeFormatter4));
    }
}

输出。

17:47:10.932
17:47:10
17:47:10
05:47:10 PM
05:47:10 PM

相关文章