2016-07-27 21 views
-1

2つの日付間で日付を取得するにはどうすればよいですか?Scalaで日付が2つの日付の間にある場合、どうすればいいですか

これは私の日である:

val date = "01 Jan, 2015" 

日付範囲:私は確認したい

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

は私の日付が日付範囲の間です。

これは私が試して持っているものです:いくつかの動作を追加するにはいいとScalaの方法でしょう

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

あなたが包括的な範囲をしたい場合は、X isBefore '置き換えます'!(x isAfter y)'で 'y'を、他の条件でも同様です。 –

答えて

0

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) 
} 

をしかし、日付がこの戻り偽の日までと同じである場合であります例えばLocalDate

のための暗黙のクラスを追加すること:

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

、この暗黙のスコープで、あなたはにテストを変更することができます:

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

あなたの機能を調整することができます。

(myDate.isBefore(tillDate) && myDate.isAfter(fromDate)) || 
    myDate.isEqual(tillDate) || 
    myDate.isEqual(fromDate) 
関連する問題