2017-06-16 13 views
1

scalaでdatetime/timestampを使用する簡単な方法はありますか?ベストプラクティスは何ですか?私は現在、データを保持するために「日付」を使用していますが、現在の時間も維持したいと思います。 私は日付を設定するのに苦労しています。これは私のコードです:scalaでdatetime/timestampを使用する

val now = new java.sql.Timestamp(new java.util.Date().getTime) 

また、私はこれを実行しようとしました:

val now = new java.sql.Date(new java.util.Date().getTime) 

"タイムスタンプ" に私の進化にデータ型を変更する場合、私はエラーを得た:

case class MyObjectModel(
           id: Option[Int], 
           title: String, 
           createdat: Timestamp, 
           updatedat: Timestamp, 
           ...) 

object MyObjectModel{ 
    implicit val myObjectFormat = Json.format[MyObjectModel] 
} 

コンソール:

app\models\MyObjectModel.scala:31: No implicit format for 
java.sql.Timestamp available. 
[error] implicit val myObjectFormat = Json.format[MyObjectModel] 
[error]            ^
[error] one error found 
[error] (compile:compileIncremental) Compilation failed 

アップデート:

object ProcessStepTemplatesModel { 
    implicit lazy val timestampFormat: Format[Timestamp] = new Format[Timestamp] { 
    override def reads(json: JsValue): JsResult[Timestamp] = json.validate[Long].map(l => Timestamp.from(Instant.ofEpochMilli(l))) 

    override def writes(o: Timestamp): JsValue = JsNumber(o.getTime) 
    } 
    implicit val processStepFormat = Json.format[ProcessStepTemplatesModel] 
} 

答えて

1

はあなたのコードでこれを使用してみてください

implicit object timestampFormat extends Format[Timestamp] { 
    val format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SS'Z'") 
    def reads(json: JsValue) = { 
     val str = json.as[String] 
     JsSuccess(new Timestamp(format.parse(str).getTime)) 
    } 
    def writes(ts: Timestamp) = JsString(format.format(ts)) 
    } 

ことである(デ)、以下のようなJS互換性のある形式で連載 "2018-01-06T18:31:29.436Z"

に注意してください。暗黙のオブジェクトは、使用する前にコードで無効にするものとする。

-1

あなたの質問はWhat's the standard way to work with dates and times in Scala? Should I use Java types or there are native Scala alternatives?で処理されると思います。

Java 8 "java.time"を使用してください。

あなたはSlick(Scalaデータベースライブラリ)について言及していますが、あなたが持っているエラーはJsonライブラリから来ており、Jsonにjava.sql.Timestampのコンバータを持っていないと言われています。どのJsonライブラリを使用しているかわからなくても、実際の使用例を手伝うことは困難です。

関連する問題