Java日期时间(LocalDate、LocalTime、LocalDateTime)

2022年11月18日08:55:19

Java日期时间(LocalDate、LocalTime、LocalDateTime)

前言

Java中1.8之前有date类,date类到了1.8大部分的方法被弃而且date类如果不格式化可读性十分差,而simpledateformat方法中format和parse方法都是线程不安全的。Java1.8之后出现了localdate,localdatetime,localtime这些类,而这些类使用了final来修饰,使得这些类是不可变的,一旦实例化,值就固定了,有点类似于String类,所以这些类都是线程安全的。

localdate年月日,localtime时分秒,localdatetime年月日时分秒

1、LocalDate

LocalDate类的实例是一个不可变对象,它只提供了简单的日期,并不含当天的时间信息,这个类是不可变的和线程安全的。

方法 描述
now 根据当前时间创建LocalDate对象
of 根据指定年月日创建LocalDate对象
getYear 获得年份
getMonthValue 获得月份
getMonth 获得月份枚举值
getDayOfMonth 获得月份天数(1-31)
getDayOfWeek 获得星期几
getDayOfYear 获得年份中的第几天(1-366)
lengthOfYear 获得当年总天数
lengthOfMonth 获得当月总天数
toEpochDay 与时间纪元(1970年1月1日)相差的天数
plusDays 加天
plusWeeks 加周
plusMonths 加月
plusYears 加年
minusDays 减年
minusWeeks 减周
minusMonths 减月
minusYears 减年
withYear 替换年份
withYear 替换年份
withDayOfMonth 替换日期
withDayOfYear 替换日期
isBefore 是否日期在之前
isAfter 是否日期在之后
isEqual 是否是当前日期
isleapYear 是否是闰年

1.1、LocalDate常用API

代码如下(示例):

//A.获取//(1)获取当前日期 2022-04-20System.out.println(LocalDate.now());//(2)获取指定日期 2014-03-18System.out.println(LocalDate.of(2014,3,18));//(3)获取日期的年份 2022System.out.println(LocalDate.now().getYear());//(4)获取日期的月份 4System.out.println(LocalDate.now().getMonthValue());//(5)获取日期的日子 20System.out.println(LocalDate.now().getDayOfMonth());//(6)获取日期的星期 WEDNESDAYSystem.out.println(LocalDate.now().getDayOfWeek());//(7)当天所在这一年的第几天 110System.out.println(LocalDate.now().getDayOfYear());//(8)获取当年天数 365System.out.println(LocalDate.now().lengthOfYear());//(9)获取当月天数 30System.out.println(LocalDate.now().lengthOfMonth());//(10)与时间纪元(1970年1月1日)相差的天数,负数表示在时间纪元之前多少天 19102System.out.println(LocalDate.now().toEpochDay());//B.运算//(1)加一天System.out.println("加1天:"+LocalDate.now().plusDays(1));//(2)加一周System.out.println("加1周:"+LocalDate.now().plusWeeks(1));//(3)加一月System.out.println("加1月:"+LocalDate.now().plusMonths(1));//(4)加一年System.out.println("加1年:"+LocalDate.now().plusYears(1));//(5)减一天System.out.println("减1天:"+LocalDate.now().minusDays(1));//(6)减一周System.out.println("减1周:"+LocalDate.now().minusWeeks(1));//(7)减一月System.out.println("减1月:"+LocalDate.now().minusMonths(1));//(8)减一年System.out.println("减1年:"+LocalDate.now().minusYears(1));//C.替换//(1)替换年份System.out.println("替换年份为1:"+LocalDate.now().withYear(1));//(2)替换月份System.out.println("替换月份为1:"+LocalDate.now().withMonth(1));//(3)替换日子System.out.println("替换日期为1:"+LocalDate.now().withDayOfMonth(1));//(4)替换天数System.out.println("替换天数为1:"+LocalDate.now().withDayOfYear(1));//D.比较//(1)是否在当天之前System.out.println("是否在当天之前:"+LocalDate.now().minusDays(1).isBefore(LocalDate.now()));//(2)是否在当天之后System.out.println("是否在当天之后:"+LocalDate.now().plusDays(1).isAfter(LocalDate.now()));//(3)是否在当天System.out.println("是否在当天:"+LocalDate.now().isEqual(LocalDate.now()));//(4)是否是闰年System.out.println("今年是否是闰年:"+LocalDate.now().isLeapYear());

1.2、LocalDate 与 String 之间的转换

//(1)从文本字符串获取LocalDate实例LocalDate localdate=LocalDate.parse("2022-04-21");System.out.println(localdate);//(2)使用特定格式化形式从文本字符串获取LocalDate实例String str="2019-03-03";DateTimeFormatter fmt1=DateTimeFormatter.ofPattern("yyyy-MM-dd");LocalDate date=LocalDate.parse(str, fmt1);System.out.println(date);//(3)使用特定格式化形式将LocalDate转为字符串LocalDate today=LocalDate.now();DateTimeFormatter fmt=DateTimeFormatter.ofPattern("yyyy/MM/dd");String dateStr= today.format(fmt);System.out.println(dateStr);

1.3、LocalDate 与 Date之间的转换

//(1)LocalDate转化为DateZonedDateTime zonedDateTime=LocalDate.now().atStartOfDay(ZoneId.systemDefault());Date date=Date.from(zonedDateTime.toInstant());System.out.println(newSimpleDateFormat("yyyy-MM-dd").format(date));//(2)Date转化为LocalDateLocalDate localDate=newDate().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();System.out.println(localDate.format(DateTimeFormatter.ISO_LOCAL_DATE));

2、LocalTime

LocalTime是一个不可变的时间对象,代表一个时间,格为 时 - 分 - 秒,时间表示为纳秒精度,这个类是不可变的和线程安全的。

方法 描述
static LocalTime now() 获取默认时区的当前时间
static LocalTime now(ZoneId zone) 获取指定时区的当前时间
static LocalTime now(Clock clock) 从指定时钟获取当前时间
of 根据指定的时、分、秒获取LocalTime 实例
getHour 获取小时字段
getMinute 获取分钟字段
getSecond 获取秒字段
getNano 获取纳秒字段
plusHours 增加小时数
plusMinutes 增加分钟数
plusSeconds 增加秒数
plusNanos 增加纳秒数
minusHours 减少小时数
minusMinutes 减少分钟数
minusSeconds 减少秒数
minusNanos 减少纳秒数
compareTo 时间与另一个时间比较
isAfter 检查时间是否在指定时间之后
isBefore 检查时间是否在指定时间之前

2.1、LocalTime常用API

代码如下(示例):

//A.获取//(1)获取默认时区的当前时间 14:11:31.294System.out.println(LocalTime.now());//(2)获取指定时区的当前时间 14:11:31.392System.out.println(LocalTime.now(ZoneId.of("Asia/Shanghai")));//(3)从指定时钟获取当前时间 14:11:31.392System.out.println(LocalTime.now(Clock.systemDefaultZone()));//(4)指定获取时分秒System.out.println(LocalTime.of(12,30,30));//(5)指定获取时分System.out.println(LocalTime.of(12,30));//(6)指定获取时分秒纳秒System.out.println(LocalTime.of(12,30,30,123));//(7)获取小时字段System.out.println("时: "+LocalTime.now().getHour());//(8)获取分钟字段System.out.println("时: "+LocalTime.now().getMinute());//(9)获取秒字段System.out.println("时: "+LocalTime.now().getSecond());//(10)获取纳秒字段System.out.println("时: "+LocalTime.now().getNano());//B.计算//(1)增加一小时System.out.println("增加1小时: "+LocalTime.now().plusHours(1));//(2)增加三十分钟System.out.println("增加30分钟: "+LocalTime.now().plusMinutes(30));//(3)增加三十秒System.out.println("增加30秒: "+LocalTime.now().plusSeconds(30));//(4)增加一万纳秒System.out.println("增加10000纳秒:"+LocalTime.now().plusNanos(10000));//(5)减少一小时System.out.println("减少1小时: "+LocalTime.now().minusHours(1));//(6)减少三十分钟System.out.println("减少30分钟: "+LocalTime.now().minusMinutes(30));//(7)减少三十秒System.out.println("减少30秒: "+LocalTime.now().minusSeconds(30));//(8)减少一万纳秒System.out.println("减少10000纳秒:"+LocalTime.now().minusNanos(10000));//C.比较//(1)时间与另一个时间比较 0(相等)正数(大)负数(小)System.out.println(LocalTime.now().compareTo(LocalTime.now()));//(2)检查时间是否在指定时间之后System.out.println(LocalTime.now().isAfter(LocalTime.now()));//(3)检查时间是否在指定时间之前System.out.println(LocalTime.now().isBefore(LocalTime.now()));

2.2、LocalTime与 String 之间的转换

//(1)从文本字符串获取LocalTime实例LocalTime localTime1=LocalTime.parse("12:30:30");System.out.println(localTime1);//(2)使用特定格式化形式从文本字符串获取LocalTime实例LocalTime localTime2=LocalTime.parse("12:30:30",DateTimeFormatter.ofPattern("HH:mm:ss"));System.out.println(localTime2);//(3)使用特定格式化形式将LocalTime转为字符串DateTimeFormatter df1=DateTimeFormatter.ofPattern("HH:mm:ss");LocalTime localTime3=LocalTime.now();System.out.println(localTime3.format(df1));

3、LocalDateTime

LocalDateTime是一个不可变的日期时间对象,代表日期时间,格式为 年 - 月 - 日 - 时 - 分 - 秒,这个类是不可变的和线程安全的。

方法 描述
static LocalDateTime now() 获取默认时区的当前日期时间
static LocalDateTime now(Clock clock) 从指定时钟获取当前日期时间
static LocalDateTime now(ZoneId zone) 获取指定时区的当前日期时间
static LocalDateTime of(LocalDate date, LocalTime time) 根据日期和时间对象获取LocalDateTime 实例
static LocalDateTime of(int year, Month month, int dayOfMonth, int hour, int minute, int second) second) 根据指定的年、月、日、时、分、秒获取LocalDateTime 实例
getYear 获取年份
getMonth 使用月份枚举类获取月份
getDayOfMonth 获取日期在该月是第几天
getDayOfWeek 获取日期是星期几
getDayOfYear 获取日期在该年是第几天
getHour 获取小时
getMinute 获取分钟
getSecond 获取秒
getNano 获取纳秒
plusYears 增加年
plusMonths 增加月
plusWeeks 增加周
plusDays 增加天
plusHours 增加小时
plusMinutes 增加分
plusSeconds 增加秒
plusNanos 增加纳秒
minusYears 减少年
minusMonths 减少月
meminusWeeks 减少周
minusDays 减少天
minusHours 减少小时
minusMinutes 减少分
minusSeconds 减少秒
minusNanos 减少纳秒
isEqual 判断日期时间是否相等
isBefore 检查是否在指定日期时间之前
isAfter 检查是否在指定日期时间之后

3.1、LocalDateTime常用API

代码如下(示例):

//A.获取//(1)获取默认时区的当前日期时间System.out.println(LocalDateTime.now());//(2)获取指定时区的当前日期时间System.out.println(LocalDateTime.now(ZoneId.of("Asia/Shanghai")));//(3)从指定时钟获取当前日期时间System.out.println(LocalDateTime.now(Clock.systemDefaultZone()));//(4)根据日期和时间对象获取LocalDateTime实例System.out.println(LocalDateTime.of(LocalDate.now(),LocalTime.now()));//(5)根据指定的年、月、日、时、分、秒获取LocalDateTime实例System.out.println(LocalDateTime.of(2019,12,7,21,48,50));//(6)获取年份System.out.println("年 : "+LocalDateTime.now().getYear());//(7)使用月份枚举类获取月份System.out.println("月(英文) : "+LocalDateTime.now().getMonth());//(8) 使用月份数字类获取月份System.out.println(" 月(数字英文): "+LocalDateTime
  • 作者:Archie_java
  • 原文链接:https://blog.csdn.net/qq_43842093/article/details/127467228
    更新时间:2022年11月18日08:55:19 ,共 7797 字。