Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带mongorecord的DateTimeField的JSON自定义格式_Json_Scala_Mongodb_Datetime_Lift - Fatal编程技术网

带mongorecord的DateTimeField的JSON自定义格式

带mongorecord的DateTimeField的JSON自定义格式,json,scala,mongodb,datetime,lift,Json,Scala,Mongodb,Datetime,Lift,我正在使用lift mongodb记录2.4。 我的所有MongoRecord型号都包括以下字段,例如: object created_at extends DateTimeField(this) 当我在这个模型上调用asJSON时,它会将日期解析为一个字符串,例如 Mon, 16 Jul 2012 21:26:58 GMT 我更喜欢其他格式(例如ISO 8601,取决于acutal用例) 如何以及在何处设置自定义格式 谢谢重写asJValue和setFromJValue应该可以做到这一点,

我正在使用lift mongodb记录2.4。 我的所有MongoRecord型号都包括以下字段,例如:

object created_at extends DateTimeField(this)
当我在这个模型上调用asJSON时,它会将日期解析为一个字符串,例如

Mon, 16 Jul 2012 21:26:58 GMT
我更喜欢其他格式(例如ISO 8601,取决于acutal用例)

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

谢谢

重写asJValue和setFromJValue应该可以做到这一点,因为默认实现使用所谓的internet日期,如下所示:

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
    })
  }
}
重写asJValue和setFromJValue应该可以做到这一点,因为默认实现使用所谓的internet日期,如下所示:

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
    })
  }
}

您必须在我想:/sorry中重新解析此内容。您必须在我想:/sorry中重新解析此内容。