app/helpers/ZonedDateTimeEncoder.scala (15 lines of code) (raw):

package helpers import java.time.ZonedDateTime import java.time.format.DateTimeFormatter import io.circe.Decoder.Result import io.circe.{Decoder, Encoder, HCursor, Json} trait ZonedDateTimeEncoder { implicit val encodeZonedDateTime: Encoder[ZonedDateTime] = new Encoder[ZonedDateTime] { override def apply(a: ZonedDateTime): Json = Json.fromString(a.format(DateTimeFormatter.ISO_OFFSET_DATE_TIME)) } implicit val decodeZonedDateTime: Decoder[ZonedDateTime] = new Decoder[ZonedDateTime] { override def apply(c: HCursor): Result[ZonedDateTime] = for { str <- c.value.as[String] } yield ZonedDateTime.parse(str, DateTimeFormatter.ISO_OFFSET_DATE_TIME) } }