JDK 8 新特性-时间日期

目录

1、LocalDateTime

2、LocalDate

3、LocalTime

 


从Java8开始,推出了LocalDate、LocalTime、LocalDateTime这三个时间工具类,实现了更好地时间处理。LocalDate、LocalTime、LocalDateTime类的实例是不可变的对象,分别表示使用ISO-8601日历系统的日期、时间、日期和时间。它们提供了简单的日期或时间,并不包含当前的时间信息。也不包含与时区相关的信息。

1、LocalDateTime

java.time.LocalDateTime类表示ISO-8601日历系统中没有时区的日期时间。下面是常用的方法:

方法说明
LocalDateTime.now()从默认时区的系统时钟获取当前的日期时间。
public static LocalDateTime of(int year,Month month,int dayOfMonth,int hour,int minute,int second)从年,月,日,小时,分钟和秒获得LocalDateTime的实例,将纳秒设置为零。
localDateTime.getYear()获取年份字段。
localDateTime.getMonth()使用Month枚举获取月份字段。
localDateTime.getMonthValue()获取112之间的月份字段。
localDateTime.getHour()获取小时字段。
localDateTime.getMinute()获取分钟字段。
localDateTime.getSecond()获取秒字段。
localDateTime.getDayOfYear()获取当前日期是所在年的第几天
localDateTime.getDayOfMonth()获取当前日期月份中的第几天,从131
localDateTime.getDayOfWeek()获取星期几字段,即枚举DayOfWeek
localDateTime.plusYears(long years)将当前日期加years年
localDateTime.plusMonths(long months)将当前日期加months月
localDateTime.plusWeeks(long weeks)将当前日期加weeks周
localDateTime.plusDays(long days)将当前日期加days天
localDateTime.plusHours(long hours)将当前日期加hours小时
localDateTime.plusMinutes(long minutes)将当前日期加minutes分钟
localDateTime.plusSeconds(long seconds)将当前日期加seconds秒
localDateTime.minusYears(long years)将当前日期减years年
localDateTime.minusMonths(long months)将当前日期减months月
localDateTime.minusWeeks(long weeks)将当前日期减weeks周
localDateTime.minusDays(long days)将当前日期减days天
localDateTime.minusHours(long hours)将当前日期减hours小时
localDateTime.minusMinutes(long minutes)将当前日期减minutes分钟
localDateTime.minusSeconds(long seconds)将当前日期减seconds秒
localDateTime.minus(long amountToSubtract, TemporalUnit unit)减去指定的时间。
localDateTime.format(DateTimeFormatter formatter)使用指定的格式化程序格式化此日期时间。
localDateTime.isAfter(ChronoLocalDateTime other)检查这个日期时间是否在指定的日期之后。
localDateTime.isBefore(ChronoLocalDateTime other)检查此日期时间是否在指定的日期时间之前。
localDateTime.compareTo(ChronoLocalDateTime other)将此日期时间与其他日期时间进行比较。
localDateTime.withDayOfYear(int dayOfYear)返回LocalDateTime年的第几天更改为新值后的副本
localDateTime.withDayOfMonth(int dayOfMonth)返回LocalDateTime月的第几天更改为新值后的副本
localDateTime.withYear(int year)返回LocalDateTime年份更改为新值后的副本
localDateTime.withMonth(int month)返回LocalDateTime的月份更改为新值后的副本
localDateTime.withHour(int hour)返回LocalDateTime的小时数更改为新值后的副本
localDateTime.withMinute(int minute)返回LocalDateTime的分钟数更改为新值后的副本
localDateTime.withSecond(int second)返回LocalDateTime的秒数更改为新值后的副本
localDateTime.withNano(int nanoOfSecond)返回LocalDateTime的纳秒数更改为新值后的副本

代码示例:

public class TimeExample01 {
    public static void main(String[] args) {
        // 获取当前时间
        LocalDateTime localDateTime = LocalDateTime.now();
        System.out.println(localDateTime);
        // 获取指定时间
        LocalDateTime of = LocalDateTime.of(2020,02,01,11,01,01);
        System.out.println(of);

        System.out.println("getYear(): " + localDateTime.getYear());
        System.out.println("getDayOfYear(): " + localDateTime.getDayOfYear());
        System.out.println("getMonth(): " + localDateTime.getMonth());
        System.out.println("getMonthValue(): " + localDateTime.getMonthValue());
        System.out.println("getDayOfMonth(): " + localDateTime.getDayOfMonth());
        System.out.println("getDayOfWeek(): " + localDateTime.getDayOfWeek());
        System.out.println("getHour(): " + localDateTime.getHour());
        System.out.println("getMinute(): " + localDateTime.getMinute());
        System.out.println("getSecond(): " + localDateTime.getSecond());
        System.out.println("getNano(): " + localDateTime.getNano());

        // 时间计算
        System.out.println("plusYears(): " + localDateTime.plusYears(1));
        System.out.println("plusMonths(): " + localDateTime.plusMonths(1));
        System.out.println("plusWeeks(): " + localDateTime.plusWeeks(1));
        System.out.println("plusDays(): " + localDateTime.plusDays(1));
        System.out.println("plusHours(): " + localDateTime.plusHours(1));
        System.out.println("minusYears(): " + localDateTime.minusYears(1));
        System.out.println("minusMonths(): " + localDateTime.minusMonths(1));
        System.out.println("minusWeeks(): " + localDateTime.minusWeeks(1));
        System.out.println("minusDays(): " + localDateTime.minusDays(1));
        System.out.println("minusMinutes(): " + localDateTime.minusMinutes(1));

        //格式化时间
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("YYYY-MM-dd HH:mm:ss");
        System.out.println("format(): " + localDateTime.format(formatter));

        //比较时间
        LocalDateTime plusDays = LocalDateTime.now().plusDays(1);
        System.out.println("isAfter(): " + localDateTime.isAfter(plusDays));
        System.out.println("isBefore(): " + localDateTime.isBefore(plusDays));
        System.out.println("compareTo(): " + localDateTime.compareTo(plusDays));

    }
}

 运行结果:

2020-02-01T12:17:58.264
2020-02-01T11:01:01
getYear(): 2020
getDayOfYear(): 32
getMonth(): FEBRUARY
getMonthValue(): 2
getDayOfMonth(): 1
getDayOfWeek(): SATURDAY
getHour(): 12
getMinute(): 17
getSecond(): 58
getNano(): 264000000
plusYears(): 2021-02-01T12:17:58.264
plusMonths(): 2020-03-01T12:17:58.264
plusWeeks(): 2020-02-08T12:17:58.264
plusDays(): 2020-02-02T12:17:58.264
plusHours(): 2020-02-01T13:17:58.264
minusYears(): 2019-02-01T12:17:58.264
minusMonths(): 2020-01-01T12:17:58.264
minusWeeks(): 2020-01-25T12:17:58.264
minusDays(): 2020-01-31T12:17:58.264
minusMinutes(): 2020-02-01T12:16:58.264
format(): 2020-02-01 12:17:58
isAfter(): false
isBefore(): true
compareTo(): -1

 

2、LocalDate

 

方法说明
LocalDate.now()从默认时区的系统时钟获取当前的日期时间。
LocalDate.of(int year,Month month,int dayOfMonth)从年,月,日,获得LocalDate的实例。
localDate.getYear()获取年份字段。
localDate.getMonth()使用Month枚举获取月份字段。
localDate.getMonthValue()获取112之间的月份字段。
localDate.lengthOfMonth()获取当前日期所在月份有多少天
localDate.getDayOfYear()获取当前日期是所在年的第几天
localDate.getDayOfMonth()获取当前日期是月份中的第几天,从131
localDate.getDayOfWeek()获取星期几字段,即枚举DayOfWeek
localDate.lengthOfYear()获取当前日期所在年有多少天
localDate.isLeapYear()获取当前日期所在年是否是闰年
localDate.plusYears(long years)将当前日期加years年
localDate.plusMonths(long months)将当前日期加months月
localDate.plusWeeks(long weeks)将当前日期加weeks周
localDate.plusDays(long days)将当前日期加days天
localDate.minusYears(long years)将当前日期减years年
localDate.minusMonths(long months)将当前日期减months月
localDate.minusWeeks(long weeks)将当前日期减weeks周
localDate.minusDays(long days)将当前日期减days天
localDate.minus(long amountToSubtract, TemporalUnit unit)减去指定的时间。
localDate.format(DateTimeFormatter formatter)使用指定的格式化程序格式化此日期时间。
localDate.isAfter(ChronoLocalDateTime other)检查这个日期时间是否在指定的日期之后。
localDate.isBefore(ChronoLocalDateTime other)检查此日期时间是否在指定的日期时间之前。
localDate.compareTo(ChronoLocalDateTime other)将此日期时间与其他日期时间进行比较。
localDate.withDayOfYear(int dayOfYear)返回localDate年的第几天更改为新值后的副本
localDate.withDayOfMonth(int dayOfMonth)返回localDate月的第几天更改为新值后的副本
localDate.withYear(int year)返回localDate年份更改为新值后的副本
localDate.withMonth(int month)返回localDate的月份更改为新值后的副本

 

public class TimeExample02 {
    public static void main(String[] args) {
        // 获取当前时间
        LocalDate localDate = LocalDate.now();
        System.out.println(localDate);
        // 获取指定时间
        LocalDate of = LocalDate.of(2020,02,01);
        System.out.println(of);

        System.out.println("getYear(): " + localDate.getYear());
        System.out.println("getMonth(): " + localDate.getMonth());
        System.out.println("getMonthValue(): " + localDate.getMonthValue());
        System.out.println("getDayOfYear(): " + localDate.getDayOfYear());
        System.out.println("getDayOfMonth(): " + localDate.getDayOfMonth());
        System.out.println("getDayOfWeek(): " + localDate.getDayOfWeek());
        System.out.println("lengthOfMonth(): " + localDate.lengthOfMonth());
        System.out.println("lengthOfYear(): " + localDate.lengthOfYear());
        System.out.println("isLeapYear(): " + localDate.isLeapYear());

        // 时间计算
        System.out.println("plusYears(): " + localDate.plusYears(1));
        System.out.println("plusMonths(): " + localDate.plusMonths(1));
        System.out.println("plusWeeks(): " + localDate.plusWeeks(1));
        System.out.println("plusDays(): " + localDate.plusDays(1));
        System.out.println("minusYears(): " + localDate.minusYears(1));
        System.out.println("minusMonths(): " + localDate.minusMonths(1));
        System.out.println("minusWeeks(): " + localDate.minusWeeks(1));
        System.out.println("minusDays(): " + localDate.minusDays(1));

        //格式化时间
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("YYYY-MM-dd");
        System.out.println("format(): " + localDate.format(formatter));

        //比较时间
        LocalDate plusDays = LocalDate.now().plusDays(1);
        System.out.println("isAfter(): " + localDate.isAfter(plusDays));
        System.out.println("isBefore(): " + localDate.isBefore(plusDays));
        System.out.println("compareTo(): " + localDate.compareTo(plusDays));
    }
}

输出结果:

 

2020-02-01
2020-02-01
getYear(): 2020
getMonth(): FEBRUARY
getMonthValue(): 2
getDayOfYear(): 32
getDayOfMonth(): 1
getDayOfWeek(): SATURDAY
lengthOfMonth(): 29
lengthOfYear(): 366
isLeapYear(): true
plusYears(): 2021-02-01
plusMonths(): 2020-03-01
plusWeeks(): 2020-02-08
plusDays(): 2020-02-02
minusYears(): 2019-02-01
minusMonths(): 2020-01-01
minusWeeks(): 2020-01-25
minusDays(): 2020-01-31
format(): 2020-02-01
isAfter(): false
isBefore(): true
compareTo(): -1

3、LocalTime

方法说明
LocalTime.now()从默认时区的系统时钟获取当前的日期时间。
LocalTime.of(int hour,int minute,int second)从小时,分钟和秒获得LocalTime的实例,将纳秒设置为零。
LocalTime.getHour()获取小时字段。
LocalTime.getMinute()获取分钟字段。
LocalTime.getSecond()获取秒字段。
LocalTime.plusHours(long hours)将当前日期加hours小时
LocalTime.plusMinutes(long minutes)将当前日期加minutes分钟
LocalTime.plusSeconds(long seconds)将当前日期加seconds秒
LocalTime.minusHours(long hours)将当前日期减hours小时
LocalTime.minusMinutes(long minutes)将当前日期减minutes分钟
LocalTime.minusSeconds(long seconds)将当前日期减seconds秒
LocalTime.minus(long amountToSubtract, TemporalUnit unit)减去指定的时间。
LocalTime.format(DateTimeFormatter formatter)使用指定的格式化程序格式化此日期时间。
LocalTime.isAfter(ChronoLocalDateTime other)检查这个日期时间是否在指定的日期之后。
LocalTime.isBefore(ChronoLocalDateTime other)检查此日期时间是否在指定的日期时间之前。
LocalTime.compareTo(ChronoLocalDateTime other)将此日期时间与其他日期时间进行比较。
LocalTime.withHour(int hour)返回LocalTime的小时数更改为新值后的副本
LocalTime.withMinute(int minute)返回LocalTime的分钟数更改为新值后的副本
LocalTime.withSecond(int second)返回LocalTime的秒数更改为新值后的副本
LocalTime.withNano(int nanoOfSecond)返回LocalTime的纳秒数更改为新值后的副本
public class TimeExample03 {
    public static void main(String[] args) {
        // 获取当前时间
        LocalTime localTime = LocalTime.now();
        System.out.println(localTime);
        // 获取指定时间
        LocalTime of = LocalTime.of(11,01,01);
        System.out.println(of);

        System.out.println("getHour(): " + localTime.getHour());
        System.out.println("getMinute(): " + localTime.getMinute());
        System.out.println("getSecond(): " + localTime.getSecond());
        System.out.println("getNano(): " + localTime.getNano());

        // 时间计算
        System.out.println("plusHours(): " + localTime.plusHours(1));
        System.out.println("plusMinutes(): " + localTime.plusMinutes(1));
        System.out.println("plusSeconds(): " + localTime.plusSeconds(1));
        System.out.println("plusNanos(): " + localTime.plusNanos(1));
        System.out.println("minusHours(): " + localTime.minusHours(1));
        System.out.println("minusMinutes(): " + localTime.minusMinutes(1));
        System.out.println("minusSeconds(): " + localTime.minusSeconds(1));
        System.out.println("minusNanos(): " + localTime.minusNanos(1));

        //格式化时间
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm:ss");
        System.out.println("format(): " + localTime.format(formatter));

        //比较时间
        LocalTime plusDays = LocalTime.now().plusHours(1);
        System.out.println("isAfter(): " + localTime.isAfter(plusDays));
        System.out.println("isBefore(): " + localTime.isBefore(plusDays));
        System.out.println("compareTo(): " + localTime.compareTo(plusDays));
    }
}

运行结果:

13:02:16.607
11:01:01
getHour(): 13
getMinute(): 2
getSecond(): 16
getNano(): 607000000
plusHours(): 14:02:16.607
plusMinutes(): 13:03:16.607
plusSeconds(): 13:02:17.607
plusNanos(): 13:02:16.607000001
minusHours(): 12:02:16.607
minusMinutes(): 13:01:16.607
minusSeconds(): 13:02:15.607
minusNanos(): 13:02:16.606999999
format(): 13:02:16
isAfter(): false
isBefore(): true
compareTo(): -1

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值