score:0

import java.time.localdatetime

case class user(createdat: localdatetime)

implicit val userreads = json.reads[user]

score:2

there is already predefined format for dates defaultlocaldatetimereads:

import java.time.localdatetime

val json = json.parse("""{"date": "2016-05-30t00:23:27.070z"}""")
(json \ "date").as[localdatetime]

in case you need some other datetime library/format, you could write custom reader like this one:

import org.joda.time.datetime
import play.api.libs.json.{jserror, _}


implicit object datetimereads extends reads[datetime] {
  val format = org.joda.time.format.datetimeformat
    .forpattern("yyyy-mm-dd't'hh:mm:ss.sss'z'")

  def reads(json: jsvalue) = json match {
    case jsstring(x) => jssuccess(format.parsedatetime(x))
    case _           => jserror(s"can't read $json as datetime")
  }
}

(json \ "date").as[datetime]
res0: org.joda.time.datetime = 2016-05-30t00:23:27.070+03:00

Related Query

More Query from same tag