How can I write dates to ISO 8601 format using JSON Writes?
date, iso8601, json, playframework, scala
Solution
import play.api.libs.json.{Json, Writes}
import play.api.libs.json.Writes.dateWrites // do not import everything here, especially DefaultDateWrites
case class GetMilestoneLanguage(param1: String, dueDate: Option[java.sql.Date])
object GetMilestoneLanguage {
implicit val customDateWrites: Writes[java.util.Date] = dateWrites("yyyy-MM-dd'T'HH:mm:ss'Z'")
implicit val writes = Json.writes[GetMilestoneLanguage]
}
The key here is to define your own implicit `Writes[java.util.Date]`. If you import `DefaultDateWrites` your `customDateWrites` will be silently ignored (I wonder why there is no ambiguous implicit warning).
Problem
I've got a case calss ``` import java.sql.Date case class GetMilestoneLanguage( ... due_date: Option[Date], ... ) object GetMilestoneLanguage { implicit val writes = Json.writes[GetMilestoneLanguage] } ``` Its outputting the JSON in UTC - and I need it to be iso 8601. I'm NOT use Joda time. What the easiest way to achieve getting the date in iso 8601? Thanks