Javaの日付ライブラリを使用することには、tの欠如HREAD安全(Why is Java's SimpleDateFormat not thread-safe?)とAPIを使用するのは難しい、あなたは物事少し口に合うようにするために暗黙を使用することができます。
implicit def stringToDate(date: String) = new {
def parse(implicit format: String) = parse0(date)(format)
private def parse0(date: String)(implicit format: String) = {
val sdf = new SimpleDateFormat(format)
sdf.setLenient(false)
sdf.parse(date)
}
def isValid(implicit format: String) = try { parse0(date)(format); true } catch { case _ => false }
def beforeNow(implicit format: String) = parse0(date)(format) before new Date()
def afterNow(implicit format: String) = parse0(date)(format) after new Date()
}
次に、あなたがこのようにそれを使用することができます。
implicit val format = "yyyy-MM-dd"
"2012-12-02" isValid // true
"2012-12-02" beforeNow // ?
"2012-12-25" afterNow // ?
または、あなたでしたscala-timeを使用します。
import org.joda.time.format.ISODateTimeFormat._
import org.joda.time.DateTime
for(date <- date.parseOption("2012-12-02")) yield date < new DateTime // Option(?)
このアプローチを使用すると、Scalaのフレンドリーなインターフェースを取得し、あなたが作成し、解析し、新しいのSimpleDateFormatオブジェクトのかで、それを保管する必要はありませんスレッドの問題を避けるために、ローカルにhreadしてください。
私はScalaのエキスパートではありませんが、「Scala Time」という名前のJoda Timeラッパー(https://github.com/jorgeortiz85/scala-time)が役に立つかもしれません。 .. –