Add a small number of days inside a known month.

date-arithmetic Date arithmetic changes a date field and then formats the new date.

Date Arithmetic

startDay
DateArithmetic.kt
Replay: real traced execution (multi-file project)
fun twoDigits(value: Int): String {
    return value.toString().padStart(2, '0')
}

fun main() {
    val startDay = 10
    val daysToAdd = 3
    val dueDay = startDay + daysToAdd
    val dueDate = "2026-04-${twoDigits(dueDay)}"

    println("start=2026-04-${twoDigits(startDay)}")
    println("add=$daysToAdd")
    println("due=$dueDate")
}
fun twoDigits(value: Int): String {
    return value.toString().padStart(2, '0')
}

fun main() {
    val startDay = 5
    val daysToAdd = 3
    val dueDay = startDay + daysToAdd
    val dueDate = "2026-04-${twoDigits(dueDay)}"

    println("start=2026-04-${twoDigits(startDay)}")
    println("add=$daysToAdd")
    println("due=$dueDate")
}
fun twoDigits(value: Int): String {
    return value.toString().padStart(2, '0')
}

fun main() {
    val startDay = 20
    val daysToAdd = 3
    val dueDay = startDay + daysToAdd
    val dueDate = "2026-04-${twoDigits(dueDay)}"

    println("start=2026-04-${twoDigits(startDay)}")
    println("add=$daysToAdd")
    println("due=$dueDate")
}
  1. startDay ← 10, daysToAdd ← 3, dueDay ← 13

    5fun main() {6    val startDay→ 10 = 10 //@startDay=5, 207    val daysToAdd→ 3 = 38    val dueDay→ 13 = startDay10 + daysToAdd39    val dueDate = "2026-04-${twoDigits(dueDay13)}"
  2. fun twoDigits(value: Int): String

    pass 1 of 2
    1fun twoDigits(value13: Int): String {2    return value13.toString().padStart(2, '0')3}
  3. dueDate ← 2026-04-13

    8val dueDay = startDay + daysToAdd9val dueDate→ 2026-04-13 = "2026-04-${twoDigits(dueDay13)}"1011println("start=2026-04-${twoDigits(startDay10)}")12println("add=$daysToAdd")
  4. fun twoDigits(value: Int): String

    pass 2 of 2
    1fun twoDigits(value10: Int): String {2    return value10.toString().padStart(2, '0')3}
  5. println("start=2026-04-${twoDigits(startDay)}")

    11    println("start=2026-04-${twoDigits(startDay10)}")12    println("add=$daysToAdd3")13    println("due=$dueDate2026-04-13")14}
    outputstart=2026-04-10
    add=3
    due=2026-04-13
  1. startDay ← 5, daysToAdd ← 3, dueDay ← 8

    5fun main() {6    val startDay→ 5 = 57    val daysToAdd→ 3 = 38    val dueDay→ 8 = startDay5 + daysToAdd39    val dueDate = "2026-04-${twoDigits(dueDay8)}"
  2. fun twoDigits(value: Int): String

    pass 1 of 2
    1fun twoDigits(value8: Int): String {2    return value8.toString().padStart(2, '0')3}
  3. dueDate ← 2026-04-08

    8val dueDay = startDay + daysToAdd9val dueDate→ 2026-04-08 = "2026-04-${twoDigits(dueDay8)}"1011println("start=2026-04-${twoDigits(startDay5)}")12println("add=$daysToAdd")
  4. fun twoDigits(value: Int): String

    pass 2 of 2
    1fun twoDigits(value5: Int): String {2    return value5.toString().padStart(2, '0')3}
  5. println("start=2026-04-${twoDigits(startDay)}")

    11    println("start=2026-04-${twoDigits(startDay5)}")12    println("add=$daysToAdd3")13    println("due=$dueDate2026-04-08")14}
    outputstart=2026-04-05
    add=3
    due=2026-04-08
  1. startDay ← 20, daysToAdd ← 3, dueDay ← 23

    5fun main() {6    val startDay→ 20 = 207    val daysToAdd→ 3 = 38    val dueDay→ 23 = startDay20 + daysToAdd39    val dueDate = "2026-04-${twoDigits(dueDay23)}"
  2. fun twoDigits(value: Int): String

    pass 1 of 2
    1fun twoDigits(value23: Int): String {2    return value23.toString().padStart(2, '0')3}
  3. dueDate ← 2026-04-23

    8val dueDay = startDay + daysToAdd9val dueDate→ 2026-04-23 = "2026-04-${twoDigits(dueDay23)}"1011println("start=2026-04-${twoDigits(startDay20)}")12println("add=$daysToAdd")
  4. fun twoDigits(value: Int): String

    pass 2 of 2
    1fun twoDigits(value20: Int): String {2    return value20.toString().padStart(2, '0')3}
  5. println("start=2026-04-${twoDigits(startDay)}")

    11    println("start=2026-04-${twoDigits(startDay20)}")12    println("add=$daysToAdd3")13    println("due=$dueDate2026-04-23")14}
    outputstart=2026-04-20
    add=3
    due=2026-04-23