Skip to content

Commit 80bf61e

Browse files
committed
refactor: replace calendar with Java LocalDate
1 parent fe65992 commit 80bf61e

File tree

1 file changed

+13
-21
lines changed

1 file changed

+13
-21
lines changed

app/src/main/java/to/bitkit/ext/DateTime.kt

Lines changed: 13 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import android.icu.util.ULocale
55
import kotlinx.datetime.LocalDate
66
import kotlinx.datetime.TimeZone
77
import kotlinx.datetime.atStartOfDayIn
8+
import kotlinx.datetime.toJavaLocalDate
9+
import kotlinx.datetime.toKotlinLocalDate
810
import kotlinx.datetime.toLocalDateTime
911
import java.text.SimpleDateFormat
1012
import java.time.Instant
@@ -101,27 +103,17 @@ fun LocalDate.toMonthYearString(): String {
101103
return formatter.format(calendar.time)
102104
}
103105

104-
fun LocalDate.minusMonths(months: Int): LocalDate {
105-
val calendar = Calendar.getInstance()
106-
calendar.set(year, monthNumber - CalendarConstants.MONTH_INDEX_OFFSET, dayOfMonth)
107-
calendar.add(Calendar.MONTH, -months)
108-
return LocalDate(
109-
calendar.get(Calendar.YEAR),
110-
calendar.get(Calendar.MONTH) + CalendarConstants.MONTH_INDEX_OFFSET,
111-
CalendarConstants.FIRST_DAY_OF_MONTH // Always use first day of month for display
112-
)
113-
}
114-
115-
fun LocalDate.plusMonths(months: Int): LocalDate {
116-
val calendar = Calendar.getInstance()
117-
calendar.set(year, monthNumber - CalendarConstants.MONTH_INDEX_OFFSET, dayOfMonth)
118-
calendar.add(Calendar.MONTH, months)
119-
return LocalDate(
120-
calendar.get(Calendar.YEAR),
121-
calendar.get(Calendar.MONTH) + CalendarConstants.MONTH_INDEX_OFFSET,
122-
CalendarConstants.FIRST_DAY_OF_MONTH // Always use first day of month for display
123-
)
124-
}
106+
fun LocalDate.minusMonths(months: Int): LocalDate =
107+
this.toJavaLocalDate()
108+
.minusMonths(months.toLong())
109+
.withDayOfMonth(1) // Always use first day of month for display
110+
.toKotlinLocalDate()
111+
112+
fun LocalDate.plusMonths(months: Int): LocalDate =
113+
this.toJavaLocalDate()
114+
.plusMonths(months.toLong())
115+
.withDayOfMonth(1) // Always use first day of month for display
116+
.toKotlinLocalDate()
125117

126118
fun LocalDate.endOfDay(): Long {
127119
return this.atStartOfDayIn(TimeZone.currentSystemDefault())

0 commit comments

Comments
 (0)