From 117ed25cee4e1b63e9bc933ee8aaaa6f2668716f Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 9 Apr 2021 00:21:07 +0800 Subject: [PATCH] =?UTF-8?q?=200.10.1=20=E6=B7=BB=E5=8A=A0=E6=97=B6?= =?UTF-8?q?=E9=97=B4=E7=B1=BB=E5=9E=8B=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- build.gradle | 2 +- .../com/synebula/gaea/data/date/DateTime.kt | 181 +++++++++++++++++- 2 files changed, 179 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index 1996ab2..df48694 100644 --- a/build.gradle +++ b/build.gradle @@ -21,7 +21,7 @@ allprojects { subprojects { ext { - version '0.10.0' + version '0.10.1' spring_version = "2.3.0.RELEASE" } diff --git a/src/gaea/src/main/kotlin/com/synebula/gaea/data/date/DateTime.kt b/src/gaea/src/main/kotlin/com/synebula/gaea/data/date/DateTime.kt index 8348d94..6163127 100644 --- a/src/gaea/src/main/kotlin/com/synebula/gaea/data/date/DateTime.kt +++ b/src/gaea/src/main/kotlin/com/synebula/gaea/data/date/DateTime.kt @@ -25,7 +25,15 @@ class DateTime : Comparable { /** * 列出时间的级别数组 */ - private val calendarLevel = intArrayOf(Calendar.MILLISECOND, Calendar.SECOND, Calendar.MINUTE, Calendar.HOUR_OF_DAY, Calendar.DAY_OF_MONTH, Calendar.MONTH, Calendar.YEAR) + private val calendarLevel = intArrayOf( + Calendar.MILLISECOND, + Calendar.SECOND, + Calendar.MINUTE, + Calendar.HOUR_OF_DAY, + Calendar.DAY_OF_MONTH, + Calendar.MONTH, + Calendar.YEAR + ) val date: Date get() = calendar.time @@ -43,35 +51,147 @@ class DateTime : Comparable { return instance.time } + /** + * 当前时间年 + */ var year: Int get() = calendar.get(Calendar.YEAR) set(value) = calendar.set(Calendar.YEAR, value) + /** + * 当前时间月 + */ var month: Int get() = calendar.get(Calendar.MONTH) set(value) = calendar.set(Calendar.MONTH, value) + /** + * 当前时间天 + */ var day: Int get() = calendar.get(Calendar.DAY_OF_MONTH) set(value) = calendar.set(Calendar.DAY_OF_MONTH, value) + /** + * 获取时间 + */ val time: Time get() = Time(calendar.time) - val firstDay: DateTime + /** + * 获取当月天数 + */ + val days: Int + get() { + return this.calendar.getActualMaximum(Calendar.DAY_OF_MONTH) + } + + /** + * 当前月第一天 + */ + val firstDayOfMonth: DateTime get() { val instance = calendar.clone() as Calendar instance.set(Calendar.DAY_OF_MONTH, 1) return DateTime(instance) } - val lastDay: DateTime + /** + * 当前月最后一天 + */ + val lastDayOfMonth: DateTime get() { val instance = calendar.clone() as Calendar instance.set(Calendar.DAY_OF_MONTH, instance.getActualMaximum(Calendar.DAY_OF_MONTH)) return DateTime(instance) } + /** + * 当前周第一天 + */ + val firstDayOfWeek: DateTime + get() { + val instance = calendar.clone() as Calendar + instance.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY) + instance.set(Calendar.HOUR_OF_DAY, 0) + instance.set(Calendar.MINUTE, 0) + instance.set(Calendar.SECOND, 0) + instance.set(Calendar.MILLISECOND, 0) + return DateTime(instance) + } + + /** + * 当前周最后一天 + */ + val lastDayOfWeek: DateTime + get() { + val instance = this.firstDayOfWeek.calendar.clone() as Calendar + instance.add(Calendar.DAY_OF_WEEK, 6)//当前周第一天加6天 + instance.set(Calendar.HOUR_OF_DAY, 23) + instance.set(Calendar.MINUTE, 59) + instance.set(Calendar.SECOND, 59) + instance.set(Calendar.MILLISECOND, 0) + return DateTime(instance) + } + + /** + * 当前天最早时间 + */ + val earliestTime: DateTime + get() { + val instance = this.calendar.clone() as Calendar + instance.set(Calendar.HOUR_OF_DAY, 0) + instance.set(Calendar.MINUTE, 0) + instance.set(Calendar.SECOND, 0) + instance.set(Calendar.MILLISECOND, 0) + return DateTime(instance) + } + + /** + * 当前天最晚时间 + */ + val latestTime: DateTime + get() { + val instance = this.calendar.clone() as Calendar + instance.set(Calendar.HOUR_OF_DAY, 23) + instance.set(Calendar.MINUTE, 59) + instance.set(Calendar.SECOND, 59) + instance.set(Calendar.MILLISECOND, 0) + return DateTime(instance) + } + + /** + * 当前时间最上一月 + */ + val previousMonth: DateTime + get() { + return this.addMonth(-1) + } + + /** + * 当前时间下一月 + */ + val nextMonth: DateTime + get() { + return this.addMonth(1) + } + + /** + * 当前时间最上一天 + */ + val previousDay: DateTime + get() { + return this.addDay(-1) + } + + /** + * 当前时间下一天 + */ + val nextDay: DateTime + get() { + return this.addDay(1) + } + /** * 从Date格式转化 */ @@ -188,6 +308,61 @@ class DateTime : Comparable { } } + /** + * 判断当前时间是否在某时间后 + * + * @param other 另一时间 + */ + fun after(other: DateTime): Boolean { + return this.date.after(other.date) + } + + /** + * 判断当前时间是否在某时间前 + * + * @param other 另一时间 + */ + fun before(other: DateTime): Boolean { + return this.date.before(other.date) + } + + /** + * 加减月份。 + * + * @param month 月份。可以为负数,即为减。 + */ + fun addMonth(month: Int): DateTime { + val instance = calendar.clone() as Calendar + instance.add(Calendar.MONTH, month) + return DateTime(instance) + } + + /** + * 加减日期。 + * + * @param day 天数。可以为负数,即为减。 + */ + fun addDay(day: Int): DateTime { + val instance = calendar.clone() as Calendar + instance.add(Calendar.DAY_OF_MONTH, day) + return DateTime(instance) + } + + /** + * 当前天是否工作日 + */ + fun isWorkday(): Boolean { + return !this.isWeekend() + } + + /** + * 当前天是否周末 + */ + fun isWeekend(): Boolean { + val dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) + return (dayOfWeek == Calendar.SATURDAY || dayOfWeek == Calendar.SUNDAY) + } + operator fun minus(other: DateTime): TimeSpan { return TimeSpan(this.milliseconds - other.milliseconds) }