Perhaps changing the comment would be better than doing anything else. What I’ve seen at work is using Scala’s Durations as timestamps, which is obviously wrong, but often works.
Example where abusing Scala’s Duration doesn’t lead to an exception https://scastie.scala-lang.org/ItsiCnvYQLipxuAxWdTXDA
import scala.concurrent.duration._
val date1 = java.time.LocalDateTime.of(2018, 3, 14, 13, 58, 58)
val date2 = java.time.LocalDateTime.of(2019, 6, 11, 1, 5, 8)
val abusedDuration1 = date1.toInstant(java.time.ZoneOffset.UTC).toEpochMilli().millis
val abusedDuration2 = date2.toInstant(java.time.ZoneOffset.UTC).toEpochMilli().millis
val duration = abusedDuration2 - abusedDuration1
println(duration.toCoarsest)
If we shift dates by 1000 years to the past then code will fail despite the final duration being the same
import scala.concurrent.duration._
// dates shifted back by 1000 years
val date1 = java.time.LocalDateTime.of(1018, 3, 14, 13, 58, 58)
val date2 = java.time.LocalDateTime.of(1019, 6, 11, 1, 5, 8)
val abusedDuration1 = date1.toInstant(java.time.ZoneOffset.UTC).toEpochMilli().millis
val abusedDuration2 = date2.toInstant(java.time.ZoneOffset.UTC).toEpochMilli().millis
val duration = abusedDuration2 - abusedDuration1
println(duration.toCoarsest)
The solution is to not abuse Scala’s Duration and instead use dedicated method for computing durations https://scastie.scala-lang.org/SKURqgjERNef5ripAnXmcw
import scala.concurrent.duration._
import scala.jdk.DurationConverters._
val date1 = java.time.LocalDateTime.of(1018, 3, 14, 13, 58, 58)
val date2 = java.time.LocalDateTime.of(1019, 6, 11, 1, 5, 8)
val javaDuration = java.time.Duration.between(date1, date2)
val duration = javaDuration.toScala
println(duration.toCoarsest)