Dates, Times, and Formatting
Date Arithmetic
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
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")
}
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)}"fun twoDigits(value: Int): String
pass 1 of 21fun twoDigits(value13: Int): String {2 return value13.toString().padStart(2, '0')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")fun twoDigits(value: Int): String
pass 2 of 21fun twoDigits(value10: Int): String {2 return value10.toString().padStart(2, '0')3}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
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)}"fun twoDigits(value: Int): String
pass 1 of 21fun twoDigits(value8: Int): String {2 return value8.toString().padStart(2, '0')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")fun twoDigits(value: Int): String
pass 2 of 21fun twoDigits(value5: Int): String {2 return value5.toString().padStart(2, '0')3}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
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)}"fun twoDigits(value: Int): String
pass 1 of 21fun twoDigits(value23: Int): String {2 return value23.toString().padStart(2, '0')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")fun twoDigits(value: Int): String
pass 2 of 21fun twoDigits(value20: Int): String {2 return value20.toString().padStart(2, '0')3}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