xk-time是时间转换,时间计算,时间格式化,时间解析,日历,时间cron表达式和时间NLP等的工具,使用Java8,线程安全,简单易用,多达70几种常用日期格式化模板,支持Java8时间类和Date,轻量级,无第三方依赖。xk-timeisatoolfortimeconversion,timecalculation,timeformatting,timeparsing,calendar,timecronexpressionandtimeNLP,etc.ItusesJava8,thread-safe,easytouse,andmorethan70commondateformattingtemplates,SupportJava8timeclassandDate,lightweight,nothird-partydependencies.1安装项目1.1Maven<dependency><groupId>com.github.xkzhangsan</groupId><artifactId>xk-time</artifactId><version>3.2.3</version></dependency>Mini版本不包含timenlp功能,更简洁。<dependency><groupId>com.github.xkzhangsan</groupId><artifactId>xk-time</artifactId><version>3.2.3.Mini</version></dependency>1.2Gradlecompilegroup:'com.github.xkzhangsan',name:'xk-time',version:'3.2.3'注意:Android谨慎使用,Android端因为需要兼容低版本而不支持Java8,建议继续使用其他工具,如果有需要本项目相关的功能,可以参考源码实现,或留言给我。感谢支持!2为什么要开发这个工具?2.1Java8以前的DateAPI设计不太好,使用不方便,往往会有线程安全问题。xk-time工具包,使用java8api,其中Instant、LocalDate、LocalDateTime、LocalTime、ZonedDateTime等都是线程安全的类,而且增加了更丰富的方法,在此基础上开发相关工具类,线程安全,让使用更方便。2.2常见的DateUtil,往往将时间转换,计算,格式化,解析等功能都放在同一个类中,导致类功能复杂,方法太多,查找不方便。xk-time工具包,将上面功能按照时间转换,时间计算,时间格式化解析分成3个工具类:DateTimeConverterUtil,DateTimeCalculatorUtil,DateTimeFormatterUtil,每个类只做一个种功能,方便使用。2.3为了将与时间紧密相关的节假日、农历、二十四节气、十二星座、十二生肖、十二时辰和日历等功能集中起来开发成工具,方便使用。2.4xk-time、joda-time和Java8time包的关系2.4.1joda-time和Java8time包实现基本相同,都是StephenColebourne主导的,从Java8开始,推荐使用java8time包替换joda-time。2.4.2xk-time是基于Java8日期api的,是一个补充工具,和以前的dateutil类似。(1)Java8的类库是层级实现纵向的,xk-time则是按照通用功能横向的,比如转换,计算,格式化解析分为3个类等。(2)Java8Date转换成新类,需要查看api文档,xk-time则在内部转换好,使Date可以直接使用Java8的新功能。(3)xk-time把dateutil的常用功能重新按照Java8的Api实现,同时做了一些扩展,使用更方便。3主要功能说明3.1日期转换工具类DateTimeConverterUtil包含:(1)Date、LocalDate、LocalDateTime、LocalTime、Instant、ZonedDateTime、YearMonth、Timestamp、时间戳和TemporalAccessor等互相转换。(2)天、小时、分钟、秒和毫秒等时间单位相互转换,支持小单位到大单位的精确转换比如,minuteToHourPrecise(longnum)90分钟转换为小时,为1.5小时。(3)转换ZonedDateTime的同时支持转换为指定时区,比如toZonedDateTime(Datedate,StringzoneId),toZonedDateTimeAndTransformZone(LocalDateTimelocalDateTime,StringtargetZoneId)。注意,ZonedDateTime相关的转换,尤其是其他时间转ZonedDateTime,要注意时间和对应时区一致。详细使用可以查看相关测试代码:DateTimeConverterUtilTest.3.2日期计算工具类DateTimeCalculatorUtil包括:(1)获取时间属性方法(支持年月日时分秒毫秒,星期,时间戳等),get*比如getYear(Datedate)获取年部分,getMonthCnLong(Datedate)获取月份中文,getDayOfWeekCn(Datedate),获取星期中文。(2)获取时间加操作方法,plus*比如plusYears(Datedate,longamountToAdd)当前时间年增加amountToAdd值。(3)获取时间减操作方法,minus*比如minusYears(Datedate,longamountToSubtract)当前时间年减少amountToSubtract值。(4)获取时间修改属性方法,with*比如withYear(Datedate,longnewValue)修改当前时间年值为newValue。(5)获取比较2个时间方法,between*比如betweenTotalDays(DatestartInclusive,DateendExclusive)比较2个时间,返回总天数。(6)其他常用方法,比如isLeapYear(Datedate)判断是否闰年,isWeekend(Datedate)判断是否周末,isExpiry(StringyearMonthStr)是否过期等(7)时区转换计算方法,transform*,比如transform(ZonedDateTimezonedDateTime,StringzoneId)(8)比较2个时间大小和相等方法,compare*,比如compare(Datedate1,Datedate2)(9)获取准确的起始时间方法,start*,end*,比如startTimeOfMonth()当月起始时间当月第一天日期+00:00:00,endTimeOfMonth()当月最后一天日期+23:59:59精确到秒;endAccuracyTimeOf*,精确到毫秒(Date),精确到纳秒(LocalDateTime)。(10)相同月日比较判断方法,isSameMonthDay*,betweenNextSameMonthDay*,nextSameMonthDay*,比如用于生日,节日等周期性的日期比较判断。(11)星座计算方法,getConstellation*,比如getConstellationNameCn(StringmonthDayStr),根据日期计算星座。(12)计算指定年月或起始时间区间的时间列表,get*List,比如getDateList(intyear,intmonth),计算指定年月的时间列表。(13)减少时间精度方法,reduceAccuracyTo*,比如reduceAccuracyToDay(Datedate),减少时间精度到天,其他补0,返回如,2020-04-2300:00:00。(14)获取时间戳方法,getEpoch*,比如getEpochMilli()获取时间戳,getEpochMilliFormat()获取时间戳格式化字符串(yyyy-MM-ddHH声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论