欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java中的日期时间类

程序员文章站 2022-05-18 17:26:33
...

JAVA8时间处理

最近看到大佬的代码中有用到这个类,觉得很好用,就做了整理。
包括:LocalDate、LocalTime、LocalDateTime

1. LocaoDate

java中做时间处理时一般会采用java.util.Date,但是相比于Date来说,还有更好的选择 java.time.LocalDate。

LocalDate不包含时间,只是单纯的年月日

// 获取时间    返回值    意义     2020-01-21
getYear()  //   int    获取当前日期的年份   2020
getMonth() //   Month    获取当前日期的月份对象  month对象 JANUARY 数字从0开始
getMonthValue()  //  int    获取当前日期是第几月  1
getDayOfWeek()  //  DayOfWeek    表示该对象表示的日期是星期几  TUESDAY 数字从0开始
getDayOfMonth() //   int    表示该对象表示的日期是这个月第几天  21
getDayOfYear()  //  int    表示该对象表示的日期是今年第几天  21
// 如果传的值不正确,会报异常
withYear(int year)  //  LocalDate    修改当前对象的年份  
withMonth(int month) //   LocalDate    修改当前对象的月份  
withDayOfMonth(int dayOfMonth)  //  LocalDate    修改当前对象在当月的日期  
isLeapYear()  //  boolean    是否是闰年  
lengthOfMonth() //   int    这个月有多少天  
lengthOfYear()  //  int    该对象表示的年份有多少天(365或者366)  
// 计算
plusYears(long yearsToAdd)  //  LocalDate    当前对象增加指定的年份数  
plusMonths(long monthsToAdd)  //  LocalDate    当前对象增加指定的月份数  
plusWeeks(long weeksToAdd)  //  LocalDate    当前对象增加指定的周数  
plusDays(long daysToAdd) //   LocalDate    当前对象增加指定的天数  
minusYears(long yearsToSubtract) //   LocalDate    当前对象减去指定的年数  
minusMonths(long monthsToSubtract)  //  LocalDate    当前对象减去注定的月数  
minusWeeks(long weeksToSubtract) //   LocalDate    当前对象减去指定的周数  
minusDays(long daysToSubtract)  //  LocalDate    当前对象减去指定的天数  
compareTo(ChronoLocalDate other)   // int    比较当前对象和other对象在时间上的大小,返回值如果为正,则当前对象时间较晚,other更小 
isBefore(ChronoLocalDate other)  //  boolean    比较当前对象日期是否在other对象日期之前  
isAfter(ChronoLocalDate other) //   boolean    比较当前对象日期是否在other对象日期之后  
isEqual(ChronoLocalDate other)  //  boolean    比较两个日期对象是否相等 
// 取当前日期:  
LocalDate today = LocalDate.now(); // -> 2020-01-02  
// 根据年月日取日期:  
LocalDate crischristmas = LocalDate.of(2019, 12, 25); // -> 2019-12-25  
// 根据字符串取:  
LocalDate endOfFeb = LocalDate.parse("2020-01-20"); // 严格按照ISO yyyy-MM-dd验证,01写成1都不行  
// 取本月第1天:  
LocalDate firstDayOfThisMonth = today.with(TemporalAdjusters.firstDayOfMonth()); // 2020-01-01  
// 取本月第2天:  
LocalDate secondDayOfThisMonth = today.withDayOfMonth(2); // 2020-01-02  
// 取本月最后一天,再也不用计算是28,29,30还是31:  
LocalDate lastDayOfThisMonth = today.with(TemporalAdjusters.lastDayOfMonth()); // 2020-01-31  
// 取下一天:  
LocalDate firstDayOf2018 = lastDayOfThisMonth.plusDays(1); // 变成了2020-02-01  
// 取2020年1月第一个周一
LocalDate firstMondayOf2020 = LocalDate.parse("2020-01-01").with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY)); // 2020-01-06

2. LocalTime

LocalTime只包含时间,获得当前时间:

// 构造时间
LocalTime now = LocalTime.now(); // 15:10:07.459
LocalTime zero = LocalTime.ofof(13, 55, 36); // 13:55:36  
LocalTime date = LocalTime.of(13, 55, 36, 123);//13:55:36.000000123   微毫 10^9
LocalTime mid = LocalTime.parse("13:55:36"); // 13:55:36
LocalTime time = LocalTime.parse("13:55:36.123");//13:55:36.123
// 访问时分秒,用法与LocalDate类似
getHour()  
getMinute()  
getSecond()  
getNano()
//  LocalTime类包含一系列方法,能帮你完成时间计算,用法与LocalDate类似
plusHours()  
plusMinutes()  
plusSeconds()  
plusNanos()  
minusHours()  
minusMinutes()  
minusSeconds()  
minusNanos()

3. LocalDateTime

// 构造时间
LocalDateTime nowDateTime = LocalDateTime.now(); //2020-01-21T15:07:39.980
LocalDateTime date = LocalDateTime.of(2020, 11, 26, 13, 55, 36, 123); //2020-11-26T13:55:36.000000123
LocalDateTime time = LocalDateTime.parse("2019-12-26T13:55:36.123"); //2019-12-26T13:55:36.123
// 访问日期时间,用法与LocalDate类似
getYear()  
getMonth()  
getDayOfMonth()  
getDayOfWeek()  
getDayOfYear()  
getHour()  
getMinute()  
getSecond()   
getNano()  
// LocalDateTime类包含一系列方法,能帮你完成时间计算,用法与LocalDate类似
plusYears()  
plusMonths()  
plusDays()  
plusHours()  
plusMinutes()  
plusSeconds()  
plusNanos()  
minusYears()  
minusMonths()  
minusDays()  
minusHours()  
minusMinutes()  
minusSeconds()  
minusNanos()  

4. mybatis中和mysql交互

  • 如果想要在JDBC中,使用Java8的日期LocalDate、LocalDateTime,则必须要求数据库驱动的版本不能低于4.2
  • LocalDate --> date
  • LocalTime --> time
  • LocalDateTime --> datetime