io.qross.core 核心库
io.qross.time 时间处理相关
封装这个类的原因是因为Java原生的日期时间类太难用了,后来虽然有了LocalDateTime
类,也是各种不习惯。平时开发中时常要用到日期时间,特别是数据开发时更会频繁用到。DateTime 类封装了LocalDateTime
类并提供了大量常用的方法进行相关的操作。
DateTime()
DateTime(dateTime: Any)
DateTime(dateTime: Any , formatStyle: String)
DateTime(dateTime: Any, mode: Int)
DateTime(dateTime: Any, formatStyle: String, mode: Int)
相关参数解释如下:
dateTime
任何格式的日期时间值,如字符串2020-09-12 12:00:00
或纪元秒等,系统会自动判断类型并尝试转化为正确的日期时间。formatStyle
当系统不能将dateTime
参数正常识别或转换时,可辅助formatStyle
参数,如new DateTime("2019年9月20日", "yyyy年M月d日")
mode
日期时间类型参数,可选DateTime.DATE
、DateTime.TIME
、DateTime.FULL
、DateTime.TIMESTAMP
,分别代表仅日期、仅时间、完整格式和时间戳。静态方法主要用于辅助创建时间。
now: DateTime
获得当前日期时间。today: DateTime
获得今天的日期,时间为00:00:00
。from(date: DateTime): DateTime
从另一个日期时间创建,一般用于复制。ofTimestamp(epochSecond: Long): DateTime
从纪元秒新建日期时间。of(year: Int, month: Int, dayOfMonth: Int, hourOfDay: Int, minute: Int, second: Int): DateTime
指定日期时间的各部分新建。getDaysSpan(beginTime: String, endTime: String): Long
获得两个日期时间之间的天数差。getDaysSpan(beginTime: DateTime, endTime: DateTime): Long
获得两个日期时间之间的天数差。getSecondsSpan(beginTime: String, endTime: String): Long
获得两个日期时间之间的秒数差。getSecondsSpan(beginTime: DateTime, endTime: DateTime): Long
获得两个日期时间之间的秒数差。实例方法是DateTime类的核心,分组说明如下:
get(field: ChronoField): Int
根据ChronoField
得到相应的日期时间部分的值,不常用。getYear: Int
得到年份。getQuarter: Int
得到季度。getQuarterName: String
得到季度的名字,如Q3
,中文环境下为3季
。getFullQuarterName: String
得到季度的全称,如3rd quaryter
,中文环境下为第3季度
。getMonth: Int
得到月份。getMonthName: String
得到月份的名字,如Aug
,中文环境下为八月
。getFullMonthName: String
得到月份的全称,如August
,中文环境下为八月
。getDayOfMonth: Int
得到日期,即当月几号。getDayOfWeek: Int
得到星期数字,周一到周日分别对应1
到7
。getDayOfYear: Int
得到一个数字,表示是一年中的第几天,取值范围1~366
。getWeekName: String
得到星期的名称,如Sat
,中文环境下为星期六
。getFullWeekName: String
得到星期和全称,如Saturday
,中文环境下为星期六
。getHour: Int
得到24
小时制的小时。getMinute: Int
得到分钟。getSecond: Int
得到秒。getMilli: Int
得到毫秒数。getMicro: Int
得到微秒数。getNano: Int
得到纳秒数。下面是以上方法的简写:
year
quarter
quarterName
fullQuarterName
month
monthName
fullMonthName
dayOfMonth
dayOfweek
dayOfYear
weekName
fullWekkName
hour
minute
second
milli
micro
nano
set(filed: ChronoField, value: Int): DateTime
按ChronoField
设置某个单位的值,不常用。setYear(year: Int): DateTime
设置年份。setMonth(month: Int): DateTime
设置月份。setDayOfMonth(day: Int): DateTime
设置日期。setDayOfWeek(week: String): DateTime
按英文星期名称设置星期,最少两位,如setDayOfWeek('WED')
。名称不区分大小写。setDayOfWeek(week: Int): DateTime
按数字设置星期,星期一到星期日分别对应1
到7
。setHour(hour: Int): DateTime
设置小时。setMinute(minute: Int): DateTime
设置分钟。setSecond(second: Int): DateTime
设置秒钟。setMilli(milli: Int): DateTime
设置毫秒。setMicro(micro: Int): DateTime
设置微秒。setNano(nano: Int): DateTime
设置纳秒。setBeginningOfMonth(): DateTime
设置为月初1
号00:00:00
。setZeroOfDay(): DateTime
设置为当天00:00:00
。plus(unit: ChronoUnit, amount: Int): DateTime
在当前日期时间基础上增加指定数量的时间单位ChronoUnit
,不常用。plus(unit: String, amount: Int): DateTime
在当前日期时间基础上增加指定数量的时间单位unit
,不常用。unit
支持YEAR
、MONTH
、DAY
、HOUR
、MINUTE
、SECOND
、MILLI
、MICRO
、NANO
,不区分大小写。plusYears(amount: Long): DateTime
增加年。plusMonths(amount: Long): DateTime
增加月。plusDays(amount: Long): DateTime
增加天。plusHours(amount: Long): DateTime
增加小时。plusMinutes(amount: Long): DateTime
增加分钟。plusSeconds(amount: Long): DateTime
增加秒。plusMillis(amount: Long): DateTime
增加毫秒。plusMicros(amount: Long): DateTime
增加微秒。plusNanos(amount: Long): DateTime
增加纳秒。minus(unit: ChronoUnit, amount: Int): DateTime
在当前日期时间基础上减少指定数量的时间单位ChronoUnit
,不常用。minus(unit: String, amount: Int): DateTime
在当前日期时间基础上减少指定数量的时间单位unit
,不常用。unit
支持YEAR
、MONTH
、DAY
、HOUR
、MINUTE
、SECOND
、MILLI
、MICRO
、NANO
,不区分大小写。minusYears(amount: Long): DateTime
减少年。minusMonths(amount: Long): DateTime
减少月。minusDays(amount: Long): DateTime
减少天。minusHours(amount: Long): DateTime
减少小时。minusMinutes(amount: Long): DateTime
减少分钟。minusSeconds(amount: Long): DateTime
减少秒。minusMillis(amount: Long): DateTime
减少毫秒。minusMicros(amount: Long): DateTime
减少微秒。minusNanos(amount: Long): DateTime
减少纳秒。日期时间的增减操作支持负数参数,如plusDays(-1)
,等同于minusDays(1)
。plus
和minus
操作跟set
操作都返回日期时间对象本身,所以可以进行链式操作,如DateTime.today.plusMonths(1).setDayOfMonth(1).minusDays(-1)
得到本月最后一天。
getString(formatStyle: String): String
或format(formatStyle: String): String
按指定的格式格式化日期时间,返回字符串。getNumber(formatStyle: String): Long
按指定的格式格式化日期时间,返回整数。toEpochSecond: Long
得到10
位的纪元秒。toEpochMill: Long
得到13
位的纪元毫秒。toDate: java.util.Date
得到Java的原生日期时间类。toString: String
根据mode
不同返回不同格式的字符串,默认yyyy-MM-dd HH:mm:Ss
。toDateString: String
返回格式为yyyy-MM-dd
。toTimeString: String
返回格式为HH:mm:ss
。toFullString: String
返回格式为yyyy-MM-dd HH:mm:ss
。formatStyle
参数中的时间单位y
表示年,2 位返回19
,4 位返回2019
Q
表示季度,1 位返回3
,2 位返回03
,3 位返回Q3
,4 位返回3rd quarter
。中文环境下返回中文,如3季
、第3季度
。M
表示月,1位返回4
,2位返回04
,3位返回Apr
,4位返回 April
。中文环境下返回中文,如四月
。d
表示天,1位和2位都返回15
,1位时小于10
才返回1位数字H
表示24小时制小时,1位和2位都返回13
,1位时小于10
返回1位数字h
表示12小时制小时,1位返回1
,2位返回01
m
表示分钟,1位和2位都返回27
,1位时分钟小于10
时返回1位数字。s
表示秒,1位返回5
,两位返回05
S
表示毫秒,一般为3位e
或E
表示星期,1位返回1
,2位返回01
,3位返回Mon
,4位返回Monday
。中文环境下返回中文,如星期一
。a
表示上下午,返回AM
或PM
。中文环境下返回上午
或下午
。equals(otherDateTime: DateTime): Boolean
是否相等。before(otherDateTime: DateTime): Boolean
是否早于另一个时间。beforeOrEquals(otherDateTime: DateTime): Boolean
是否早于或等于另一个时间。after(otherDateTime: DateTime): Boolean
是否晚于另一个时间。afterOrEquals(otherDateTime: DateTime): Boolean
是否晚于或等于另一个时间。later(otherDateTime: DateTime): Long
当前日期时间晚于另一个日期时间多少毫秒,可能为负数。earlier(otherDateTime: DateTime): Long
当前日期时间早于另一个日期时间多少毫秒,可能为负数。span(otherDateTime: DateTime): Long
当前日期时间与另一个日期时间相差多少毫秒,0
或正数。matches(chronExp: String): Boolean
是否匹配指定的Chron时间表达式。copy(): DateTime
复制当前日期时间express(expression: String): DateTime
通过表达式快速设置日期时间。 例如:DateTime.now.express('MONTH+1#DAY=1#DAY-1#HOUR=0#MINUTE=0#SECOND=0#NANO=0')
或DateTime.now.express('DAY=L#HOUR=0#MINUTE=0#SECOND=0#NANO=0')
,等同于DateTime.now.plusMonths(1).setDayOfMonth(1).minusDays(1).setHour(0).setMinute(0).setSecond(0).setNano(0)
。
expression
由一个或多个时间表达式构成,时间表达式之间用井号#
隔开。YEAR
,MONTH
,DAY
,WEEK
,MINUTE
,SECOND
,MILLI
,MICRO
,NANO
。时间单位不区分大小写。=
表示设置,+
表示增加,-
表示减去。DAY
时支持L
,表示最后一天。WEEK
时支持三位的星期名称:Mon,Tue, Wed, Thu, Fri, Sat, SungetTickValue()
得到精确到分钟的当前时间,秒位为0
,如2021-07-28 19:28:00
。getTockValue()
得到精确到小时的当前时间,分钟和秒位为0
,如2021-07-28 19:00:00
。localDateTime
得到Java的 LocalDateTime 日期时间类参考链接