带有mongorecord的DateTimeField的JSON自定义格式

时间:2012-07-16 22:36:18

标签: json scala mongodb datetime lift

即时通讯使用lift-mongodb-record 2.4。 我的所有MongoRecord模型都包含以下DateTimeField字段,例如:

object created_at extends DateTimeField(this)

当我在这个模型上调用asJSON时,它会将日期解析成一个字符串,例如

Mon, 16 Jul 2012 21:26:58 GMT

我更喜欢其他格式(例如ISO 8601,取决于实际使用情况)

我如何以及在何处设置自定义格式?

感谢

1 个答案:

答案 0 :(得分:1)

覆盖 asJValue setFromJValue 应该可以解决问题,因为默认实现使用所谓的互联网日期,如下所示:

val statusDate = new DateTimeField(this){

  val sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
  override def asJValue = {
    asJString(v => sdf.format(v.getTime))
  }

  override def setFromJValue(jvalue: JValue) = setFromJString(jvalue) {
    v =>tryo {
        sdf.parse(v)
      }.map(d => {
      val cal = Calendar.getInstance
      cal.setTime(d)
      cal
    })
  }
}