@@ -5,6 +5,8 @@ import android.icu.util.ULocale
55import kotlinx.datetime.LocalDate
66import kotlinx.datetime.TimeZone
77import kotlinx.datetime.atStartOfDayIn
8+ import kotlinx.datetime.toJavaLocalDate
9+ import kotlinx.datetime.toKotlinLocalDate
810import kotlinx.datetime.toLocalDateTime
911import java.text.SimpleDateFormat
1012import 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
126118fun LocalDate.endOfDay (): Long {
127119 return this .atStartOfDayIn(TimeZone .currentSystemDefault())
0 commit comments