Here is my favorite approach to deal with joda time LocalDate comparison. First, we need to create an implicit class. In C#, this is comparable to the Extension Method. We can add or extend the functionality of a class without modifying the class implementation. In this case, we will extend LocalData as below:
----------------------
import org.joda.time.{Days, LocalDate}
object LocalDateExtension {
class LocalDateExtension(a: LocalDate) {
def dayDiff(b: LocalDate): Int = {
Days.daysBetween(a, b).getDays.abs
}
def >(b: LocalDate): Boolean = {
a.isAfter(b)
}
def >=(b: LocalDate): Boolean = {
a.isAfter(b) || a.isEqual(b)
}
def <(b: LocalDate): Boolean = {
a.isBefore(b)
}
def <=(b: LocalDate): Boolean = {
a.isBefore(b) || a.isEqual(b)
}
}
implicit def extendLocalDate(a: LocalDate) = new LocalDateExtension(a)
}
------------------------
What we are doing here? In scala, we are allowed to name a method using any character such as equal, greater than, or less than signs. This way, we can use the same syntax we use in C# to compare dates. For example as below:
----------------------
What we are doing here? In scala, we are allowed to name a method using any character such as equal, greater than, or less than signs. This way, we can use the same syntax we use in C# to compare dates. For example as below:
----------------------
import org.joda.time.{Days, LocalDate}
val a = LocalDate("2010-04-28")
val b = LocalDate("2010-04-29")
print(a > b) // false
print(a >= b) // false
print(a < b) // true
print(a <= b) // true
------------------------