Skip to content

Commit 021c97b

Browse files
authored
Replace dayOfMonth with day and monthNumber with month (#387)
`monthNumber` is still called that in the formatting facilities to distinguish `monthNumber` from `monthName`, and also in `DateTimeComponents` because `monthNumber` can contain out-of-bounds data and is useful even aside from being a view of `Month`. Fixes #84
1 parent 646b93b commit 021c97b

38 files changed

+366
-202
lines changed

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ val datetimeInSystemZone: LocalDateTime = currentMoment.toLocalDateTime(TimeZone
108108
```
109109

110110
A `LocalDateTime` instance exposes familiar components of the Gregorian calendar:
111-
`year`, `month`, `dayOfMonth`, `hour`, and so on up to `nanosecond`.
111+
`year`, `month`, `day`, `hour`, and so on up to `nanosecond`.
112112
The property `dayOfWeek` shows what weekday that date is,
113113
and `dayOfYear` shows the day number since the beginning of a year.
114114

@@ -210,7 +210,7 @@ can define their own format or use some of the predefined ones:
210210
val dateFormat = LocalDate.Format {
211211
monthNumber(padding = Padding.SPACE)
212212
char('/')
213-
dayOfMonth()
213+
day()
214214
char(' ')
215215
year()
216216
}

core/api/kotlinx-datetime.api

+19
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,7 @@ public final class kotlinx/datetime/LocalDate : java/lang/Comparable {
260260
public synthetic fun compareTo (Ljava/lang/Object;)I
261261
public fun compareTo (Lkotlinx/datetime/LocalDate;)I
262262
public fun equals (Ljava/lang/Object;)Z
263+
public final fun getDay ()I
263264
public final fun getDayOfMonth ()I
264265
public final fun getDayOfWeek ()Ljava/time/DayOfWeek;
265266
public final fun getDayOfYear ()I
@@ -303,6 +304,8 @@ public final class kotlinx/datetime/LocalDateJvmKt {
303304
}
304305

305306
public final class kotlinx/datetime/LocalDateKt {
307+
public static final fun LocalDate (III)Lkotlinx/datetime/LocalDate;
308+
public static final fun LocalDate (ILjava/time/Month;I)Lkotlinx/datetime/LocalDate;
306309
public static final fun atTime (Lkotlinx/datetime/LocalDate;IIII)Lkotlinx/datetime/LocalDateTime;
307310
public static final fun atTime (Lkotlinx/datetime/LocalDate;Lkotlinx/datetime/LocalTime;)Lkotlinx/datetime/LocalDateTime;
308311
public static synthetic fun atTime$default (Lkotlinx/datetime/LocalDate;IIIIILjava/lang/Object;)Lkotlinx/datetime/LocalDateTime;
@@ -327,6 +330,7 @@ public final class kotlinx/datetime/LocalDateTime : java/lang/Comparable {
327330
public fun compareTo (Lkotlinx/datetime/LocalDateTime;)I
328331
public fun equals (Ljava/lang/Object;)Z
329332
public final fun getDate ()Lkotlinx/datetime/LocalDate;
333+
public final fun getDay ()I
330334
public final fun getDayOfMonth ()I
331335
public final fun getDayOfWeek ()Ljava/time/DayOfWeek;
332336
public final fun getDayOfYear ()I
@@ -356,6 +360,10 @@ public final class kotlinx/datetime/LocalDateTime$Formats {
356360
}
357361

358362
public final class kotlinx/datetime/LocalDateTimeKt {
363+
public static final fun LocalDateTime (IIIIIII)Lkotlinx/datetime/LocalDateTime;
364+
public static final fun LocalDateTime (ILjava/time/Month;IIIII)Lkotlinx/datetime/LocalDateTime;
365+
public static synthetic fun LocalDateTime$default (IIIIIIIILjava/lang/Object;)Lkotlinx/datetime/LocalDateTime;
366+
public static synthetic fun LocalDateTime$default (ILjava/time/Month;IIIIIILjava/lang/Object;)Lkotlinx/datetime/LocalDateTime;
359367
public static final fun format (Lkotlinx/datetime/LocalDateTime;Lkotlinx/datetime/format/DateTimeFormat;)Ljava/lang/String;
360368
public static final fun toLocalDateTime (Ljava/lang/String;)Lkotlinx/datetime/LocalDateTime;
361369
}
@@ -396,10 +404,14 @@ public final class kotlinx/datetime/LocalTime$Formats {
396404

397405
public final class kotlinx/datetime/LocalTimeKt {
398406
public static final fun atDate (Lkotlinx/datetime/LocalTime;III)Lkotlinx/datetime/LocalDateTime;
407+
public static final fun atDate (Lkotlinx/datetime/LocalTime;IIILkotlin/Unit;)Lkotlinx/datetime/LocalDateTime;
399408
public static final fun atDate (Lkotlinx/datetime/LocalTime;ILjava/time/Month;I)Lkotlinx/datetime/LocalDateTime;
409+
public static final fun atDate (Lkotlinx/datetime/LocalTime;ILjava/time/Month;ILkotlin/Unit;)Lkotlinx/datetime/LocalDateTime;
400410
public static final fun atDate (Lkotlinx/datetime/LocalTime;Lkotlinx/datetime/LocalDate;)Lkotlinx/datetime/LocalDateTime;
401411
public static synthetic fun atDate$default (Lkotlinx/datetime/LocalTime;IIIILjava/lang/Object;)Lkotlinx/datetime/LocalDateTime;
412+
public static synthetic fun atDate$default (Lkotlinx/datetime/LocalTime;IIILkotlin/Unit;ILjava/lang/Object;)Lkotlinx/datetime/LocalDateTime;
402413
public static synthetic fun atDate$default (Lkotlinx/datetime/LocalTime;ILjava/time/Month;IILjava/lang/Object;)Lkotlinx/datetime/LocalDateTime;
414+
public static synthetic fun atDate$default (Lkotlinx/datetime/LocalTime;ILjava/time/Month;ILkotlin/Unit;ILjava/lang/Object;)Lkotlinx/datetime/LocalDateTime;
403415
public static final fun format (Lkotlinx/datetime/LocalTime;Lkotlinx/datetime/format/DateTimeFormat;)Ljava/lang/String;
404416
public static final fun toLocalTime (Ljava/lang/String;)Lkotlinx/datetime/LocalTime;
405417
}
@@ -484,6 +496,7 @@ public final class kotlinx/datetime/format/DateTimeComponents {
484496
public static final field Companion Lkotlinx/datetime/format/DateTimeComponents$Companion;
485497
public fun <init> ()V
486498
public final fun getAmPm ()Lkotlinx/datetime/format/AmPmMarker;
499+
public final fun getDay ()Ljava/lang/Integer;
487500
public final fun getDayOfMonth ()Ljava/lang/Integer;
488501
public final fun getDayOfWeek ()Ljava/time/DayOfWeek;
489502
public final fun getDayOfYear ()Ljava/lang/Integer;
@@ -505,6 +518,7 @@ public final class kotlinx/datetime/format/DateTimeComponents {
505518
public final fun setDateTime (Lkotlinx/datetime/LocalDateTime;)V
506519
public final fun setDateTimeOffset (Lkotlinx/datetime/Instant;Lkotlinx/datetime/UtcOffset;)V
507520
public final fun setDateTimeOffset (Lkotlinx/datetime/LocalDateTime;Lkotlinx/datetime/UtcOffset;)V
521+
public final fun setDay (Ljava/lang/Integer;)V
508522
public final fun setDayOfMonth (Ljava/lang/Integer;)V
509523
public final fun setDayOfWeek (Ljava/time/DayOfWeek;)V
510524
public final fun setDayOfYear (Ljava/lang/Integer;)V
@@ -563,6 +577,7 @@ public abstract interface class kotlinx/datetime/format/DateTimeFormatBuilder {
563577

564578
public abstract interface class kotlinx/datetime/format/DateTimeFormatBuilder$WithDate : kotlinx/datetime/format/DateTimeFormatBuilder {
565579
public abstract fun date (Lkotlinx/datetime/format/DateTimeFormat;)V
580+
public abstract fun day (Lkotlinx/datetime/format/Padding;)V
566581
public abstract fun dayOfMonth (Lkotlinx/datetime/format/Padding;)V
567582
public abstract fun dayOfWeek (Lkotlinx/datetime/format/DayOfWeekNames;)V
568583
public abstract fun dayOfYear (Lkotlinx/datetime/format/Padding;)V
@@ -573,6 +588,8 @@ public abstract interface class kotlinx/datetime/format/DateTimeFormatBuilder$Wi
573588
}
574589

575590
public final class kotlinx/datetime/format/DateTimeFormatBuilder$WithDate$DefaultImpls {
591+
public static synthetic fun day$default (Lkotlinx/datetime/format/DateTimeFormatBuilder$WithDate;Lkotlinx/datetime/format/Padding;ILjava/lang/Object;)V
592+
public static fun dayOfMonth (Lkotlinx/datetime/format/DateTimeFormatBuilder$WithDate;Lkotlinx/datetime/format/Padding;)V
576593
public static synthetic fun dayOfMonth$default (Lkotlinx/datetime/format/DateTimeFormatBuilder$WithDate;Lkotlinx/datetime/format/Padding;ILjava/lang/Object;)V
577594
public static synthetic fun dayOfYear$default (Lkotlinx/datetime/format/DateTimeFormatBuilder$WithDate;Lkotlinx/datetime/format/Padding;ILjava/lang/Object;)V
578595
public static synthetic fun monthNumber$default (Lkotlinx/datetime/format/DateTimeFormatBuilder$WithDate;Lkotlinx/datetime/format/Padding;ILjava/lang/Object;)V
@@ -584,6 +601,7 @@ public abstract interface class kotlinx/datetime/format/DateTimeFormatBuilder$Wi
584601
}
585602

586603
public final class kotlinx/datetime/format/DateTimeFormatBuilder$WithDateTime$DefaultImpls {
604+
public static fun dayOfMonth (Lkotlinx/datetime/format/DateTimeFormatBuilder$WithDateTime;Lkotlinx/datetime/format/Padding;)V
587605
public static fun secondFraction (Lkotlinx/datetime/format/DateTimeFormatBuilder$WithDateTime;I)V
588606
}
589607

@@ -593,6 +611,7 @@ public abstract interface class kotlinx/datetime/format/DateTimeFormatBuilder$Wi
593611
}
594612

595613
public final class kotlinx/datetime/format/DateTimeFormatBuilder$WithDateTimeComponents$DefaultImpls {
614+
public static fun dayOfMonth (Lkotlinx/datetime/format/DateTimeFormatBuilder$WithDateTimeComponents;Lkotlinx/datetime/format/Padding;)V
596615
public static fun secondFraction (Lkotlinx/datetime/format/DateTimeFormatBuilder$WithDateTimeComponents;I)V
597616
}
598617

core/api/kotlinx-datetime.klib.api

+15-1
Original file line numberDiff line numberDiff line change
@@ -97,13 +97,14 @@ sealed interface kotlinx.datetime.format/DateTimeFormatBuilder { // kotlinx.date
9797

9898
sealed interface WithDate : kotlinx.datetime.format/DateTimeFormatBuilder { // kotlinx.datetime.format/DateTimeFormatBuilder.WithDate|null[0]
9999
abstract fun date(kotlinx.datetime.format/DateTimeFormat<kotlinx.datetime/LocalDate>) // kotlinx.datetime.format/DateTimeFormatBuilder.WithDate.date|date(kotlinx.datetime.format.DateTimeFormat<kotlinx.datetime.LocalDate>){}[0]
100-
abstract fun dayOfMonth(kotlinx.datetime.format/Padding = ...) // kotlinx.datetime.format/DateTimeFormatBuilder.WithDate.dayOfMonth|dayOfMonth(kotlinx.datetime.format.Padding){}[0]
100+
abstract fun day(kotlinx.datetime.format/Padding = ...) // kotlinx.datetime.format/DateTimeFormatBuilder.WithDate.day|day(kotlinx.datetime.format.Padding){}[0]
101101
abstract fun dayOfWeek(kotlinx.datetime.format/DayOfWeekNames) // kotlinx.datetime.format/DateTimeFormatBuilder.WithDate.dayOfWeek|dayOfWeek(kotlinx.datetime.format.DayOfWeekNames){}[0]
102102
abstract fun dayOfYear(kotlinx.datetime.format/Padding = ...) // kotlinx.datetime.format/DateTimeFormatBuilder.WithDate.dayOfYear|dayOfYear(kotlinx.datetime.format.Padding){}[0]
103103
abstract fun monthName(kotlinx.datetime.format/MonthNames) // kotlinx.datetime.format/DateTimeFormatBuilder.WithDate.monthName|monthName(kotlinx.datetime.format.MonthNames){}[0]
104104
abstract fun monthNumber(kotlinx.datetime.format/Padding = ...) // kotlinx.datetime.format/DateTimeFormatBuilder.WithDate.monthNumber|monthNumber(kotlinx.datetime.format.Padding){}[0]
105105
abstract fun year(kotlinx.datetime.format/Padding = ...) // kotlinx.datetime.format/DateTimeFormatBuilder.WithDate.year|year(kotlinx.datetime.format.Padding){}[0]
106106
abstract fun yearTwoDigits(kotlin/Int) // kotlinx.datetime.format/DateTimeFormatBuilder.WithDate.yearTwoDigits|yearTwoDigits(kotlin.Int){}[0]
107+
open fun dayOfMonth(kotlinx.datetime.format/Padding = ...) // kotlinx.datetime.format/DateTimeFormatBuilder.WithDate.dayOfMonth|dayOfMonth(kotlinx.datetime.format.Padding){}[0]
107108
}
108109

109110
sealed interface WithDateTime : kotlinx.datetime.format/DateTimeFormatBuilder.WithDate, kotlinx.datetime.format/DateTimeFormatBuilder.WithTime { // kotlinx.datetime.format/DateTimeFormatBuilder.WithDateTime|null[0]
@@ -138,6 +139,9 @@ final class kotlinx.datetime.format/DateTimeComponents { // kotlinx.datetime.for
138139
final var amPm // kotlinx.datetime.format/DateTimeComponents.amPm|{}amPm[0]
139140
final fun <get-amPm>(): kotlinx.datetime.format/AmPmMarker? // kotlinx.datetime.format/DateTimeComponents.amPm.<get-amPm>|<get-amPm>(){}[0]
140141
final fun <set-amPm>(kotlinx.datetime.format/AmPmMarker?) // kotlinx.datetime.format/DateTimeComponents.amPm.<set-amPm>|<set-amPm>(kotlinx.datetime.format.AmPmMarker?){}[0]
142+
final var day // kotlinx.datetime.format/DateTimeComponents.day|{}day[0]
143+
final fun <get-day>(): kotlin/Int? // kotlinx.datetime.format/DateTimeComponents.day.<get-day>|<get-day>(){}[0]
144+
final fun <set-day>(kotlin/Int?) // kotlinx.datetime.format/DateTimeComponents.day.<set-day>|<set-day>(kotlin.Int?){}[0]
141145
final var dayOfMonth // kotlinx.datetime.format/DateTimeComponents.dayOfMonth|{}dayOfMonth[0]
142146
final fun <get-dayOfMonth>(): kotlin/Int? // kotlinx.datetime.format/DateTimeComponents.dayOfMonth.<get-dayOfMonth>|<get-dayOfMonth>(){}[0]
143147
final fun <set-dayOfMonth>(kotlin/Int?) // kotlinx.datetime.format/DateTimeComponents.dayOfMonth.<set-dayOfMonth>|<set-dayOfMonth>(kotlin.Int?){}[0]
@@ -333,6 +337,8 @@ final class kotlinx.datetime/LocalDate : kotlin/Comparable<kotlinx.datetime/Loca
333337
constructor <init>(kotlin/Int, kotlin/Int, kotlin/Int) // kotlinx.datetime/LocalDate.<init>|<init>(kotlin.Int;kotlin.Int;kotlin.Int){}[0]
334338
constructor <init>(kotlin/Int, kotlinx.datetime/Month, kotlin/Int) // kotlinx.datetime/LocalDate.<init>|<init>(kotlin.Int;kotlinx.datetime.Month;kotlin.Int){}[0]
335339

340+
final val day // kotlinx.datetime/LocalDate.day|{}day[0]
341+
final fun <get-day>(): kotlin/Int // kotlinx.datetime/LocalDate.day.<get-day>|<get-day>(){}[0]
336342
final val dayOfMonth // kotlinx.datetime/LocalDate.dayOfMonth|{}dayOfMonth[0]
337343
final fun <get-dayOfMonth>(): kotlin/Int // kotlinx.datetime/LocalDate.dayOfMonth.<get-dayOfMonth>|<get-dayOfMonth>(){}[0]
338344
final val dayOfWeek // kotlinx.datetime/LocalDate.dayOfWeek|{}dayOfWeek[0]
@@ -376,6 +382,8 @@ final class kotlinx.datetime/LocalDateTime : kotlin/Comparable<kotlinx.datetime/
376382

377383
final val date // kotlinx.datetime/LocalDateTime.date|{}date[0]
378384
final fun <get-date>(): kotlinx.datetime/LocalDate // kotlinx.datetime/LocalDateTime.date.<get-date>|<get-date>(){}[0]
385+
final val day // kotlinx.datetime/LocalDateTime.day|{}day[0]
386+
final fun <get-day>(): kotlin/Int // kotlinx.datetime/LocalDateTime.day.<get-day>|<get-day>(){}[0]
379387
final val dayOfMonth // kotlinx.datetime/LocalDateTime.dayOfMonth|{}dayOfMonth[0]
380388
final fun <get-dayOfMonth>(): kotlin/Int // kotlinx.datetime/LocalDateTime.dayOfMonth.<get-dayOfMonth>|<get-dayOfMonth>(){}[0]
381389
final val dayOfWeek // kotlinx.datetime/LocalDateTime.dayOfWeek|{}dayOfWeek[0]
@@ -874,7 +882,9 @@ final fun (kotlinx.datetime/LocalDateTime).kotlinx.datetime/format(kotlinx.datet
874882
final fun (kotlinx.datetime/LocalDateTime).kotlinx.datetime/toInstant(kotlinx.datetime/TimeZone): kotlinx.datetime/Instant // kotlinx.datetime/toInstant|[email protected](kotlinx.datetime.TimeZone){}[0]
875883
final fun (kotlinx.datetime/LocalDateTime).kotlinx.datetime/toInstant(kotlinx.datetime/UtcOffset): kotlinx.datetime/Instant // kotlinx.datetime/toInstant|[email protected](kotlinx.datetime.UtcOffset){}[0]
876884
final fun (kotlinx.datetime/LocalTime).kotlinx.datetime/atDate(kotlin/Int, kotlin/Int, kotlin/Int = ...): kotlinx.datetime/LocalDateTime // kotlinx.datetime/atDate|[email protected](kotlin.Int;kotlin.Int;kotlin.Int){}[0]
885+
final fun (kotlinx.datetime/LocalTime).kotlinx.datetime/atDate(kotlin/Int, kotlin/Int, kotlin/Int, kotlin/Unit = ...): kotlinx.datetime/LocalDateTime // kotlinx.datetime/atDate|[email protected](kotlin.Int;kotlin.Int;kotlin.Int;kotlin.Unit){}[0]
877886
final fun (kotlinx.datetime/LocalTime).kotlinx.datetime/atDate(kotlin/Int, kotlinx.datetime/Month, kotlin/Int = ...): kotlinx.datetime/LocalDateTime // kotlinx.datetime/atDate|[email protected](kotlin.Int;kotlinx.datetime.Month;kotlin.Int){}[0]
887+
final fun (kotlinx.datetime/LocalTime).kotlinx.datetime/atDate(kotlin/Int, kotlinx.datetime/Month, kotlin/Int, kotlin/Unit = ...): kotlinx.datetime/LocalDateTime // kotlinx.datetime/atDate|[email protected](kotlin.Int;kotlinx.datetime.Month;kotlin.Int;kotlin.Unit){}[0]
878888
final fun (kotlinx.datetime/LocalTime).kotlinx.datetime/atDate(kotlinx.datetime/LocalDate): kotlinx.datetime/LocalDateTime // kotlinx.datetime/atDate|[email protected](kotlinx.datetime.LocalDate){}[0]
879889
final fun (kotlinx.datetime/LocalTime).kotlinx.datetime/format(kotlinx.datetime.format/DateTimeFormat<kotlinx.datetime/LocalTime>): kotlin/String // kotlinx.datetime/format|[email protected](kotlinx.datetime.format.DateTimeFormat<kotlinx.datetime.LocalTime>){}[0]
880890
final fun (kotlinx.datetime/TimeZone).kotlinx.datetime/offsetAt(kotlinx.datetime/Instant): kotlinx.datetime/UtcOffset // kotlinx.datetime/offsetAt|[email protected](kotlinx.datetime.Instant){}[0]
@@ -884,6 +894,10 @@ final fun <#A: kotlinx.datetime.format/DateTimeFormatBuilder> (#A).kotlinx.datet
884894
final fun <#A: kotlinx.datetime.format/DateTimeFormatBuilder> (#A).kotlinx.datetime.format/optional(kotlin/String = ..., kotlin/Function1<#A, kotlin/Unit>) // kotlinx.datetime.format/optional|optional@0:0(kotlin.String;kotlin.Function1<0:0,kotlin.Unit>){0§<kotlinx.datetime.format.DateTimeFormatBuilder>}[0]
885895
final fun kotlinx.datetime/DateTimePeriod(kotlin/Int = ..., kotlin/Int = ..., kotlin/Int = ..., kotlin/Int = ..., kotlin/Int = ..., kotlin/Int = ..., kotlin/Long = ...): kotlinx.datetime/DateTimePeriod // kotlinx.datetime/DateTimePeriod|DateTimePeriod(kotlin.Int;kotlin.Int;kotlin.Int;kotlin.Int;kotlin.Int;kotlin.Int;kotlin.Long){}[0]
886896
final fun kotlinx.datetime/DayOfWeek(kotlin/Int): kotlinx.datetime/DayOfWeek // kotlinx.datetime/DayOfWeek|DayOfWeek(kotlin.Int){}[0]
897+
final fun kotlinx.datetime/LocalDate(kotlin/Int, kotlin/Int, kotlin/Int): kotlinx.datetime/LocalDate // kotlinx.datetime/LocalDate|LocalDate(kotlin.Int;kotlin.Int;kotlin.Int){}[0]
898+
final fun kotlinx.datetime/LocalDate(kotlin/Int, kotlinx.datetime/Month, kotlin/Int): kotlinx.datetime/LocalDate // kotlinx.datetime/LocalDate|LocalDate(kotlin.Int;kotlinx.datetime.Month;kotlin.Int){}[0]
899+
final fun kotlinx.datetime/LocalDateTime(kotlin/Int, kotlin/Int, kotlin/Int, kotlin/Int, kotlin/Int, kotlin/Int = ..., kotlin/Int = ...): kotlinx.datetime/LocalDateTime // kotlinx.datetime/LocalDateTime|LocalDateTime(kotlin.Int;kotlin.Int;kotlin.Int;kotlin.Int;kotlin.Int;kotlin.Int;kotlin.Int){}[0]
900+
final fun kotlinx.datetime/LocalDateTime(kotlin/Int, kotlinx.datetime/Month, kotlin/Int, kotlin/Int, kotlin/Int, kotlin/Int = ..., kotlin/Int = ...): kotlinx.datetime/LocalDateTime // kotlinx.datetime/LocalDateTime|LocalDateTime(kotlin.Int;kotlinx.datetime.Month;kotlin.Int;kotlin.Int;kotlin.Int;kotlin.Int;kotlin.Int){}[0]
887901
final fun kotlinx.datetime/Month(kotlin/Int): kotlinx.datetime/Month // kotlinx.datetime/Month|Month(kotlin.Int){}[0]
888902
final fun kotlinx.datetime/UtcOffset(): kotlinx.datetime/UtcOffset // kotlinx.datetime/UtcOffset|UtcOffset(){}[0]
889903
final fun kotlinx.datetime/UtcOffset(kotlin/Int? = ..., kotlin/Int? = ..., kotlin/Int? = ...): kotlinx.datetime/UtcOffset // kotlinx.datetime/UtcOffset|UtcOffset(kotlin.Int?;kotlin.Int?;kotlin.Int?){}[0]

0 commit comments

Comments
 (0)