一、前言
java8新的时间API的使用方式,包括创建、格式化、解析、计算、修改。相对于以前常用的 Date 来说有很多优点,使用更方便,线程安全等。
使用 LocalDateTime 等时要求版本要在 26 及以上,所以为了兼容,LDateUtils 包含了 LocalDateTime 和 Date 相同功能的部分,如果想单独使用可以直接使用 LocalDateTimeUtil、LocalDateUtil、LocalTimeUtil、DateUtil, 所有的方法都在下面,每个方面里面都有更详细的注释。也可以通过库直接引入,引入方式如下:
allprojects {repositories {...maven { url 'https://www.jitpack.io' }}}dependencies {implementation 'com.github.KiWiLss:LUtils:0.0.3'}
尽量使用最新版本,如果有错误欢迎提出。
DateUtil
Github
二、LDateUtils 相关
DateUtil 和 LocalDateTimeUtil混合在一起,兼容所有版本:
- 获取当前时间相关_
getNowString :获取当前时间字符串,年月日时分秒getNowMilli :获取当前时间的时间戳,毫秒getNowYear :获取当前日期的年getNowMonth :获取当前日期的月getNowDay :获取当前日期是该月的第几天getNowHour :获取当前是几点,二十四小时制getNowMinute :获取当前时间的分钟getNowSecond :获取当前时间的秒getNowWeek :获取当前日期是该周的第几天,周日是第一天返回 1,周六最后一天返回 7getNowDayOfYear :获取今天是今年的第几天getNowDayOfMonth :获取今天是本月的第几天getNowLocalDateTime :获取当前时间,只能在 26 及以上版本使用,格式 LocalDateTimegetNowLocalDate :获取当前时间,只能在 26 及以上版本使用,格式 LocalDategetNowLocalTime :获取当前时间,只能在 26 及以上版本使用,格式 LocalDategetNowDate :获取当前时间 Date 类型
- 获取当前时间相关_
- 判断相关
isToday :是否是今天isLeapYear :是否是闰年isTomorrow :是否是明天isYesterDay :是否是昨天isSameDay :是否是同一天isSameWeek :是否在同一周isBefore :前一个日期在后一个日期之前,比后一个日期小isAfter :前面一个日期是否大于后面的日期
- 判断相关
- 获取任意时间相关
getAnyLocalDateTime :获取任意指定的时间getYear :获取任意时间的年getMonth :获取任意时间的月份getDay :获取任意时间的天数getHours :获取日期的小时,默认24小时制getMinute :获取日期的分钟getSecond :获取时间的秒
- 获取任意时间相关
4.计算相关
betweenTwoTime :获取两个日期相差的天数,后面日期大,返回正数,否则返回负数getPlusYear :获取新增 number 年后的新日期,正数增加,负数减少getPlusMonth :获取新增 number 月后的新日期,正数增加,负数减少getPlusDay :获取新增 number 天后的新日期getPlusHours :获取新增 number 小时后的新日期getPlusMinutes :获取新增 number 分钟后的新日期getPlusSecond :获取新增 number 秒后的新日期
三、LocalDateTimeUtil 相关
默认时间格式都是这种:”yyyy-MM-dd HH:mm:ss”
- 当前时间相关
getNowLocalDateTime :获取今天日期 ,返回示例2020-07-20T16:38:44.216getNowString :获取当前时间 string 类型,默认时间格式,可自定义返回格式getNowMilli :获取当前时间,毫秒getNowYear :获取今天日期的年份,返回示例2020getNowMonth :获取当前日期的月份,返回示例 7getNowDay :返回今天日期是多少号,返回示例20getNowHour :获取现在日期的小时,返回示例16getNowMinute :获取当前时间的分钟,示例38getNowSecond :返回当前时间的秒,示例20getNowWeek :获取当前日期的星期,星期一返回1getNowWeekOfYear :获取今天是今年的第几周getNowWeekOfMonth :获取今天是本月的第几周,今天是 2020-07-25 返回 4getNowDayOfYear :获取今天是今年的第多少天,示例202getNowStart :获取当前开始时间,零点,返回示例2020-07-20T00:00getNowEnd :获取当前结束时间
- 当前时间相关
- 获取任意时间相关
getAnyLocalDateTime :获取指定日期,传值示例 2020, 5, 4 , 4, 3, 9,返回示例2020-05-04T04:03:09getAnyString :获取指定时间的 string 类型,,默认时间格式,可自定义返回格式getAnyMilli :获取指定时间的 毫秒getAnyYear :获取指定时间的年份,返回示例2020getAnyMonth :获取指定日期的月份,返回示例8getAnyDay :获取指定日期的天,返回示例8getAnyWeek :获取指定日期的星期,返回示例周日返回 7getAnyWeekOfMonth :获取任意时间在本月的第几周getAnyStart :获取指定时间的开始时间getAnyEnd :获取指定时间的结束时间getFirstDayOfMonth :获取任意时间,月份的第一天的时间getLastDayOfMonth :获取任意时间,月份的最后一天的时间getFirstDayOfNextMonth :获取任意时间,下个月第一天的时间getFirstDayOfNextYear :获取任意时间,下年第一天的时间getFirstDayOfYear :获取任意时间,年份的第一天的时间getLastDayOfYear :获取任意时间,年份的最后一天的时间
- 获取任意时间相关
- 时间类型转换相关
localDateTime2String :LocalDateTime -> stringlocalDateTime2Milli :LocalDateTime -----> milli 日期转毫秒localDateTime2Second :LocalDateTime -----> second 日期转秒localDateTime2LocalDate :LocalDateTime ----> LocalDatelocalDateTime2LocalDate2:LocalDateTime ----> LocalDatelocalDateTime2LocalTime :LocalDateTime ----> LocalTimelocalDateTime2Date :localdatetime ------> datestring2LocalDateTime :string 类型时间 --> localdatetimedate2LocalDateTime :date ---> localdatetimesecond2LocalDateTime :时间戳秒--->LocalDateTimemilli2LocalDateTime :时间戳毫秒--->LocalDateTimelocalDate2LocalDateTime :LocalDate + LocalTime -----> LocalDateTime
- 时间类型转换相关
- 计算时间相关
getPlus :获取增加后的日期,可以是年,月,日,时分秒getPlusYear :获取增加 number年后的日期getPlusMonth :获取增加 number月后的日期getPlusDay :获取增加 number天后的日期getMinu :获取减少后的日期,可以是年,月,日,时,分,秒getMinuYear :获取减少 number年后的日期getMinuMonth :获取减少 number月后的日期getMinuDay :获取减少 number天后的日期betweenTwoTime :获取两个日期的差 field参数为ChronoUnit,后面的日期大,返回正数,否则返回负数betweenTwoTime :返回两个日期的时间差,返回 Duration,可以通过它获取时间差的天,小时,分钟,秒等betweenTwoTimeMonth :计算日期相差月数
- 计算时间相关
- 判断相关
isSameLocalDateTime :比较两个时间是否相同isBefore :startTime 是否在 endTime 之前isAfter :startTime 是否在 endTime 之后isToday :判断是否是今天isYesterday :是否是昨天isTomorrow :是否是明天isLeapYear :是否是闰年isSameYear :是否是同一年isSameMonth :是否是同一月isSameDay :是否在同一天isSameWeek :判断两个时间是否在同一个周内
四、LocalDateUtil 相关
默认格式:”yyyy-MM-dd”getNowLocalDate :localdata 获取当前日期年月日,返回示例2020-07-20getNowString :获取当前日期,string 类型getNowYear :获取当前时间的年getNowMonth :获取当前时间的月getNowDay :获取当前时间的号getNowWeek :获取当前日期的星期,星期一返回1getNowWeekOfYear :获取今天是今年的第几周getNowWeekOfMonth :获取今天是本月的第几周getNowDayOfYear :获取今天是今年的第多少天,示例202getNowDayOfMonth :获取今天是几号,等同于 getNowDaygetAnyLocalDate :获取指定年月日的LocalDategetAnyString :获取指定时间的 string 类型getAnyYear :获取指定时间的年份,返回示例2020getAnyMonth :获取指定日期的月份,返回示例8getAnyDay :获取指定日期的天getAnyWeek :获取指定日期的星期,周一返回 1getAnyWeekOfMonth :获取任意时间在月份的第几周getAnyWeekOfYear :获取任意时间在年份的第几周localDate2String :LocalDate --> stringlocalDate2LocalDateTime :LocalDate + LocalTime -----> LocalDateTimestring2LocalDate :string --> localdatelocalDate2Milli :LocalDate转时间戳milli2LocalDate :时间戳转 LocalDatelocalDate2Date :LocalDate -----> Datedate2LocalDate :Date ------> LocalDatebetweenTwoTime :比较两个日期的差,可以是年,月,日isToday :判断是否是今天isYesterday :判断是否是昨天isTomorrow :判断是否是明天isSameYear :判断是否是同一年isSameMonth :判断是否是同一月isSameDay :判断是否是同一天
五、LocalTimeUtil 相关
默认时间格式:HH:mm:ssgetNowLocalTime :获取当前日期的时分秒,示例16:38:44.216getNowString :获取当前时间 StringgetNowHour :获取当前时间的小时getNowMinute :获取当前时间的分钟getNowSecond :获取当前时间的秒getAnyLocalTime :获取指定时分秒的 dategetAnyHour :获取任意时间的小时getAnyMinute :获取任意时间的分钟getAnySecond :获取任意时间的秒localTime2String :LocalTime ------> StringgetPlus :增加时间,可以是时分秒getMinu :减少时间,可以是时分秒modifyLocalTime :修改时间为指定时间betweenTime :两个时间进行比较 大返回1,小就返回-1,一样就返回0isBefore :第一个时间是否在第二个时间前面isAfter :第一个时间是否在第二个时间后面
六、所有版本都适用DateUtil
- 判断相关
1.当前时间相关
getNowString : 获取当前日期 String 类型,默认返回格式2019-05-17 18:48:24,可自定义返回样式getNowDate :获取当前日期 Date 类型getNowMills :获取当前时间的时间戳(毫秒)getNowY :获取当前年getNowMonth :获取当前月getNowDay :获取当前日getNowWeek :获取当前日期是该周的第几天,周日是第一天返回 1,周六最后一天返回 7getNowHour :获取当前日期的小时getNowMinute :获取当前日期的分getNowSecond :获取当前日期的秒getDaysOfMonth :根据传入的年份和月份,判断当前月有多少天getLastDaysOfMonth 根据传入的年份和月份,获取上一个月有多少天
2.判断相关
isLeapYear :是否是闰年isTomorrow :是否是明天isSameDay :判断两个时间是否是同一天isSameWeekDates :判断两个时间是否在同一周isSameDay :检查两个Calendar对象是否是同一天checkIsActiveDate :判断是否是有效日期dateCompare :比较两个日期大小checkDateCompare :判断前后日期对比checkDateFromTo :日期比较, 后面日期比前面的日期大
3.格式转换相关 ```java string2Millis:
- 完整的时间使用 string2Millis(“2019-05-17 18:34:16”) 结果—->1558089256000
- 不完整时间使用 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 :将时间格式转换成想要的格式
- 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 : 获取两个日期的月数差 ```
