web-dev-qa-db-ja.com

ScalaでLongをIntにキャストする方法は?

次の関数を使用して、Joda TimeからUnixタイムスタンプに変換したいと思います。


def toUnixTimeStamp(dt : DateTime) : Int = {
  val millis = dt.getMillis
  val seconds = if(millis % 1000 == 0) millis / 1000
    else { throw new IllegalArgumentException ("Too precise timestamp") }

  if (seconds > 2147483647) {
    throw new IllegalArgumentException ("Timestamp out of range")
  }

  seconds
}

取得する予定の時刻値は、ミリ秒単位の正確さを期待されることはありません。契約によって秒単位の正確なUTCであり、Intとして(MySQL DBに)さらに保存されます。ただし、Joda TimeはgetSecondsではなくgetMillisのみを提供するため、標準のUnixタイムスタンプを生成するには、ミリ秒単位の正確なタイムスタンプを取得し、1000で割る必要があります。

そして、私はScalaを作成して、Long値からIntを作成します。このようなキャストを行う方法は?

33
Ivan

使用 .toInt Longのメソッド、つまりseconds.toInt