2016-07-27 1 views
-1

Comment puis-je obtenir la date entre deux dates?Comment puis-je déterminer si la date est entre deux dates dans Scala

C'est ma date:

val date = "01 Jan, 2015" 

Période:

val dateFrom = "01 Jan, 1970" 
val dateTill = "01 Jan, 2016" 

Je veux vérifier est ma date se situe entre la plage de dates.

C'est ce que j'ai essayer:

def getLocalDate(date: String): LocalDate = { 

    LocalDate.parse(date, format.DateTimeFormatter.ofPattern("dd MMM, yyyy")) 
} 

def isDateBetWeenRange(from: String, till: String, date: String): Boolean = { 

    val fromDate = getLocalDate(from) 
    val tillDate = getLocalDate(till) 
    val myDate = getLocalDate(date) 

    myDate.isBefore(tillDate) && myDate.isAfter(fromDate) 
} 

Mais est-cas, la date est la même que jusqu'à la date de ce retour faux:

val date = "01 Jan, 2010" 
println(isDateBetWeenRange("01 Jan, 2000", "01 Jan, 2016", "01 Jan, date)) 
+0

Si vous voulez plage inclus, remplacer 'x isBefore y' avec '! (x isAfter y)' et de même pour l'autre condition. –

Répondre

0

Eh bien la façon agréable et Scala d'ajouter un comportement serait d'ajouter une classe implicite pour LocalDate

par exemple:

implicit class SLocalDate(val time: LocalDate) { 
    def isBeforeEq(other: ChronoLocalDate) = !time.isAfter(other) 
    def isAfterEq(other: ChronoLocalDate) = !time.isBefore(other) 
} 

Maintenant, dans le cadre de cette implicite, vous pouvez changer votre test:

myDate.isBeforeEq(tillDate) && myDate.isAfterEq(fromDate) 
0

vous pouvez régler votre fonction:

(myDate.isBefore(tillDate) && myDate.isAfter(fromDate)) || 
    myDate.isEqual(tillDate) || 
    myDate.isEqual(fromDate)