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