一、前言

java8新的时间API的使用方式,包括创建、格式化、解析、计算、修改。相对于以前常用的 Date 来说有很多优点,使用更方便,线程安全等。

使用 LocalDateTime 等时要求版本要在 26 及以上,所以为了兼容,LDateUtils 包含了 LocalDateTime 和 Date 相同功能的部分,如果想单独使用可以直接使用 LocalDateTimeUtil、LocalDateUtil、LocalTimeUtil、DateUtil, 所有的方法都在下面,每个方面里面都有更详细的注释。也可以通过库直接引入,引入方式如下:

  1. allprojects {
  2. repositories {
  3. ...
  4. maven { url 'https://www.jitpack.io' }
  5. }
  6. }
  7. dependencies {
  8. implementation 'com.github.KiWiLss:LUtils:0.0.3'
  9. }

尽量使用最新版本,如果有错误欢迎提出。
DateUtil
Github

二、LDateUtils 相关

DateUtil 和 LocalDateTimeUtil混合在一起,兼容所有版本:

    1. 获取当前时间相关_
      1. getNowString :获取当前时间字符串,年月日时分秒
      2. getNowMilli :获取当前时间的时间戳,毫秒
      3. getNowYear :获取当前日期的年
      4. getNowMonth :获取当前日期的月
      5. getNowDay :获取当前日期是该月的第几天
      6. getNowHour :获取当前是几点,二十四小时制
      7. getNowMinute :获取当前时间的分钟
      8. getNowSecond :获取当前时间的秒
      9. getNowWeek :获取当前日期是该周的第几天,周日是第一天返回 1,周六最后一天返回 7
      10. getNowDayOfYear :获取今天是今年的第几天
      11. getNowDayOfMonth :获取今天是本月的第几天
      12. getNowLocalDateTime :获取当前时间,只能在 26 及以上版本使用,格式 LocalDateTime
      13. getNowLocalDate :获取当前时间,只能在 26 及以上版本使用,格式 LocalDate
      14. getNowLocalTime :获取当前时间,只能在 26 及以上版本使用,格式 LocalDate
      15. getNowDate :获取当前时间 Date 类型
    1. 判断相关
      1. isToday :是否是今天
      2. isLeapYear :是否是闰年
      3. isTomorrow :是否是明天
      4. isYesterDay :是否是昨天
      5. isSameDay :是否是同一天
      6. isSameWeek :是否在同一周
      7. isBefore :前一个日期在后一个日期之前,比后一个日期小
      8. isAfter :前面一个日期是否大于后面的日期
    1. 获取任意时间相关
      1. getAnyLocalDateTime :获取任意指定的时间
      2. getYear :获取任意时间的年
      3. getMonth :获取任意时间的月份
      4. getDay :获取任意时间的天数
      5. getHours :获取日期的小时,默认24小时制
      6. getMinute :获取日期的分钟
      7. getSecond :获取时间的秒
  • 4.计算相关

    1. betweenTwoTime :获取两个日期相差的天数,后面日期大,返回正数,否则返回负数
    2. getPlusYear :获取新增 number 年后的新日期,正数增加,负数减少
    3. getPlusMonth :获取新增 number 月后的新日期,正数增加,负数减少
    4. getPlusDay :获取新增 number 天后的新日期
    5. getPlusHours :获取新增 number 小时后的新日期
    6. getPlusMinutes :获取新增 number 分钟后的新日期
    7. getPlusSecond :获取新增 number 秒后的新日期

    三、LocalDateTimeUtil 相关

    默认时间格式都是这种:”yyyy-MM-dd HH:mm:ss”

    1. 当前时间相关
      1. getNowLocalDateTime :获取今天日期 ,返回示例2020-07-20T16:38:44.216
      2. getNowString :获取当前时间 string 类型,默认时间格式,可自定义返回格式
      3. getNowMilli :获取当前时间,毫秒
      4. getNowYear :获取今天日期的年份,返回示例2020
      5. getNowMonth :获取当前日期的月份,返回示例 7
      6. getNowDay :返回今天日期是多少号,返回示例20
      7. getNowHour :获取现在日期的小时,返回示例16
      8. getNowMinute :获取当前时间的分钟,示例38
      9. getNowSecond :返回当前时间的秒,示例20
      10. getNowWeek :获取当前日期的星期,星期一返回1
      11. getNowWeekOfYear :获取今天是今年的第几周
      12. getNowWeekOfMonth :获取今天是本月的第几周,今天是 2020-07-25 返回 4
      13. getNowDayOfYear :获取今天是今年的第多少天,示例202
      14. getNowStart :获取当前开始时间,零点,返回示例2020-07-20T00:00
      15. getNowEnd :获取当前结束时间
    1. 获取任意时间相关
      1. getAnyLocalDateTime :获取指定日期,传值示例 2020, 5, 4 , 4, 3, 9,返回示例2020-05-04T04:03:09
      2. getAnyString :获取指定时间的 string 类型,,默认时间格式,可自定义返回格式
      3. getAnyMilli :获取指定时间的 毫秒
      4. getAnyYear :获取指定时间的年份,返回示例2020
      5. getAnyMonth :获取指定日期的月份,返回示例8
      6. getAnyDay :获取指定日期的天,返回示例8
      7. getAnyWeek :获取指定日期的星期,返回示例周日返回 7
      8. getAnyWeekOfMonth :获取任意时间在本月的第几周
      9. getAnyStart :获取指定时间的开始时间
      10. getAnyEnd :获取指定时间的结束时间
      11. getFirstDayOfMonth :获取任意时间,月份的第一天的时间
      12. getLastDayOfMonth :获取任意时间,月份的最后一天的时间
      13. getFirstDayOfNextMonth :获取任意时间,下个月第一天的时间
      14. getFirstDayOfNextYear :获取任意时间,下年第一天的时间
      15. getFirstDayOfYear :获取任意时间,年份的第一天的时间
      16. getLastDayOfYear :获取任意时间,年份的最后一天的时间
    1. 时间类型转换相关
      1. localDateTime2String LocalDateTime -> string
      2. localDateTime2Milli LocalDateTime -----> milli 日期转毫秒
      3. localDateTime2Second LocalDateTime -----> second 日期转秒
      4. localDateTime2LocalDate LocalDateTime ----> LocalDate
      5. localDateTime2LocalDate2LocalDateTime ----> LocalDate
      6. localDateTime2LocalTime LocalDateTime ----> LocalTime
      7. localDateTime2Date localdatetime ------> date
      8. string2LocalDateTime string 类型时间 --> localdatetime
      9. date2LocalDateTime date ---> localdatetime
      10. second2LocalDateTime :时间戳秒--->LocalDateTime
      11. milli2LocalDateTime :时间戳毫秒--->LocalDateTime
      12. localDate2LocalDateTime LocalDate + LocalTime -----> LocalDateTime
    1. 计算时间相关
      1. getPlus :获取增加后的日期,可以是年,月,日,时分秒
      2. getPlusYear :获取增加 number年后的日期
      3. getPlusMonth :获取增加 number月后的日期
      4. getPlusDay :获取增加 number天后的日期
      5. getMinu :获取减少后的日期,可以是年,月,日,时,分,秒
      6. getMinuYear :获取减少 number年后的日期
      7. getMinuMonth :获取减少 number月后的日期
      8. getMinuDay :获取减少 number天后的日期
      9. betweenTwoTime :获取两个日期的差 field参数为ChronoUnit,后面的日期大,返回正数,否则返回负数
      10. betweenTwoTime :返回两个日期的时间差,返回 Duration,可以通过它获取时间差的天,小时,分钟,秒等
      11. betweenTwoTimeMonth :计算日期相差月数
    1. 判断相关
      1. isSameLocalDateTime :比较两个时间是否相同
      2. isBefore :startTime 是否在 endTime 之前
      3. isAfter :startTime 是否在 endTime 之后
      4. isToday :判断是否是今天
      5. isYesterday :是否是昨天
      6. isTomorrow :是否是明天
      7. isLeapYear :是否是闰年
      8. isSameYear :是否是同一年
      9. isSameMonth :是否是同一月
      10. isSameDay :是否在同一天
      11. isSameWeek :判断两个时间是否在同一个周内

      四、LocalDateUtil 相关

      默认格式:”yyyy-MM-dd”
      1. getNowLocalDate :localdata 获取当前日期年月日,返回示例2020-07-20
      2. getNowString :获取当前日期,string 类型
      3. getNowYear :获取当前时间的年
      4. getNowMonth :获取当前时间的月
      5. getNowDay :获取当前时间的号
      6. getNowWeek :获取当前日期的星期,星期一返回1
      7. getNowWeekOfYear :获取今天是今年的第几周
      8. getNowWeekOfMonth :获取今天是本月的第几周
      9. getNowDayOfYear :获取今天是今年的第多少天,示例202
      10. getNowDayOfMonth :获取今天是几号,等同于 getNowDay
      11. getAnyLocalDate :获取指定年月日的LocalDate
      12. getAnyString :获取指定时间的 string 类型
      13. getAnyYear :获取指定时间的年份,返回示例2020
      14. getAnyMonth :获取指定日期的月份,返回示例8
      15. getAnyDay :获取指定日期的天
      16. getAnyWeek :获取指定日期的星期,周一返回 1
      17. getAnyWeekOfMonth :获取任意时间在月份的第几周
      18. getAnyWeekOfYear :获取任意时间在年份的第几周
      19. localDate2String :LocalDate --> string
      20. localDate2LocalDateTime :LocalDate + LocalTime -----> LocalDateTime
      21. string2LocalDate :string --> localdate
      22. localDate2Milli :LocalDate转时间戳
      23. milli2LocalDate :时间戳转 LocalDate
      24. localDate2Date :LocalDate -----> Date
      25. date2LocalDate :Date ------> LocalDate
      26. betweenTwoTime :比较两个日期的差,可以是年,月,日
      27. isToday :判断是否是今天
      28. isYesterday :判断是否是昨天
      29. isTomorrow :判断是否是明天
      30. isSameYear :判断是否是同一年
      31. isSameMonth :判断是否是同一月
      32. isSameDay :判断是否是同一天

      五、LocalTimeUtil 相关

      默认时间格式:HH:mm:ss
      1. getNowLocalTime :获取当前日期的时分秒,示例16:38:44.216
      2. getNowString :获取当前时间 String
      3. getNowHour :获取当前时间的小时
      4. getNowMinute :获取当前时间的分钟
      5. getNowSecond :获取当前时间的秒
      6. getAnyLocalTime :获取指定时分秒的 date
      7. getAnyHour :获取任意时间的小时
      8. getAnyMinute :获取任意时间的分钟
      9. getAnySecond :获取任意时间的秒
      10. localTime2String :LocalTime ------> String
      11. getPlus :增加时间,可以是时分秒
      12. getMinu :减少时间,可以是时分秒
      13. modifyLocalTime :修改时间为指定时间
      14. betweenTime :两个时间进行比较 大返回1,小就返回-1,一样就返回0
      15. isBefore :第一个时间是否在第二个时间前面
      16. isAfter :第一个时间是否在第二个时间后面

      六、所有版本都适用DateUtil

  • 1.当前时间相关

    1. getNowString : 获取当前日期 String 类型,默认返回格式2019-05-17 18:48:24,可自定义返回样式
    2. getNowDate :获取当前日期 Date 类型
    3. getNowMills :获取当前时间的时间戳(毫秒)
    4. getNowY :获取当前年
    5. getNowMonth :获取当前月
    6. getNowDay :获取当前日
    7. getNowWeek :获取当前日期是该周的第几天,周日是第一天返回 1,周六最后一天返回 7
    8. getNowHour :获取当前日期的小时
    9. getNowMinute :获取当前日期的分
    10. getNowSecond :获取当前日期的秒
    11. getDaysOfMonth :根据传入的年份和月份,判断当前月有多少天
    12. getLastDaysOfMonth 根据传入的年份和月份,获取上一个月有多少天
  • 2.判断相关

    1. isLeapYear :是否是闰年
    2. isTomorrow :是否是明天
    3. isSameDay :判断两个时间是否是同一天
    4. isSameWeekDates :判断两个时间是否在同一周
    5. isSameDay :检查两个Calendar对象是否是同一天
    6. checkIsActiveDate :判断是否是有效日期
    7. dateCompare :比较两个日期大小
    8. checkDateCompare :判断前后日期对比
    9. checkDateFromTo :日期比较, 后面日期比前面的日期大
  • 3.格式转换相关 ```java string2Millis:

  1. 完整的时间使用 string2Millis(“2019-05-17 18:34:16”) 结果—->1558089256000
  2. 不完整时间使用 string2Millis(“2019-05-17”,PATTEN_YMD) 结果—->1558022400000(相当于2019-05-17 00:00:00) string2Millis :String 转时间戳(13 位,毫秒) millis2String :时间戳转 String 类型

string2Date :String 类型转 Date date2String :Date 类型转 String millis2Date :毫秒时间戳转 Date date2Millis :Date 转时间戳

calendar2Date :将Calendar对象转换为Date对象 date2Calendar :将Date对象转换为Calendar对象

string2String :将时间格式转换成想要的格式

  1. - 4.其他

getTimeSpan :获取两个时间的时间差( 例如比较相差多少秒: getTimeSpan(“2019-05-17 18:34:16”,”2019-05-17 18:35:16”,SEC) 结果—> -60) getFitTimeSpan :获取两个时间的时间差,可返回相差天数,小时,分钟等 getTimeSpanByNow :获取时间和当前日期的差值 getFriendlyTimeSpanByNow :获取时间与当前时间的时间差 getChineseWeek :获取汉语星期几 getUSWeek :获取英文的星期 getChineseZodiac :获取生肖 getZodiac :获取星座 getWeekFormDate :获得一个日期所在的周的星期几的日期,如要找出2002年2月3日所在周的星期一是几号

getEDate :返回美国时间格式 26 Apr 2006 getEndDateOfMonth :获取一个月的最后一天 getNextDay :得到一个时间延后或前移几天的时间 getPreTime :时间前推或后推分钟 getUserDate :返回想要的时间样式 getCalendar :获取 Calendar computerDuration :计算时长 between :判断srcDate时间是否在startDate和endDate之间

getYear :获取任意时间的年 getMonth :获取任意时间的月 getDay :获取任意时间的天 getHour :获取任意时间的小时,12 小时制 getHour2 :获取任意时间的小时,24 小时制 getMinute :获取任意时间的分钟 getSecond :获取任意时间的秒 getBeforeDate :获取前一天日期 getTomorrowDate ;获取明天的日期

addYears :在date时间基础上增加amount年,原date不变,获取后几年或前几年日期 addMonth :日期加月 addDay :日期加日,得到新日期 addHour :日期加小时 addMinute :日期加分钟 addSecond :日期加秒

setYears :对date对象的年份字段设置value值,返回一个新的date对象,原date不变 setMonths :对date对象的月字段设置value值,返回一个新的date对象,原date不变 setDay :对date对象的天字段设置value值,返回一个新的date对象,原date不变 setHours :对date对象的小时字段设置value值,返回一个新的date对象,原date不变 setMinute :对date对象的分钟字段设置value值,返回一个新的date对象,原date不变 setSecond ;对date对象的秒字段设置value值,返回一个新的date对象,原date不变

thirtyDaysBeforeSpecifiedDate :获取指定日期的前30天的日期 thirtyDaysBeforeNow :获取当前日期前30天的日期 getBeforeMonth :获取当前时间的上一个月的年月 getLastDayOfMonth :返回某月的最后一天 getFirstDayOfMonth ;返回某月的第一天 getThisMonthLastDay :获取本月最后一天 getThisMonthFirstDay ;获取本月第一天 getNextWeekMonday :获取下周一日期 secondToTime :时间戳秒,返回日时分秒

dayDiff :计算两个日期之间间隔天数 daysBetween :计算两个日期之间间隔天数 getThisWeekMonday0 :本周一凌晨 getThisWeekMonday :本周一 geLastWeekMonday :上周一 getFirstTime :获取当天的最早时间00:00:00 getLatestTime :获取当天的最晚时间23:59:59 getTomorrowEnding :获得明日23点59分59秒的时间戳 getTomorrowMorning :获得明日0点0分0秒的时间戳

getDifferMonth : 获取两个日期的月数差 ```