All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.quantifind.sumac.DateTimeParser.scala Maven / Gradle / Ivy

package com.quantifind.sumac

import org.joda.time.{ReadableDateTime, Chronology, DateTime}
import org.joda.time.chrono.ISOChronology
import java.util.{Calendar, Date}
import java.lang.reflect.Type
import scala.util.matching.Regex
import scala.collection._

class DateTimeParser(fmts:Map[Regex,String], chronology: Chronology = ISOChronology.getInstanceUTC)
  extends DateParser(fmts, chronology.getZone.toTimeZone)
{
  override val knownTypes: Set[Class[_]] = Set(
    classOf[DateTime], classOf[Date], classOf[Calendar], classOf[ReadableDateTime]
  )

  override def parse(s:String, tpe: Type, currentVal: AnyRef, parsers: Seq[Parser[_]]) = {
    tpe match {
      case dt: Class[_] if dt.isAssignableFrom(classOf[DateTime]) =>
        val d = parseDate(s)
        new DateTime(d.getTime()).withChronology(chronology)
    }
  }

  override def valueAsString(v: AnyRef, tpe: Type, parsers: Seq[Parser[_]]): String = {
    v match {
      case dt: DateTime =>
        valueAsString(new Date(dt.getMillis), classOf[Date], parsers)
      case _ =>
        super.valueAsString(v,tpe, parsers)
    }
  }
}

object USDateTimeParser extends DateTimeParser(DateTimeFormats.usFormats)

object StandardDateTimeParse extends DateTimeParser(DateTimeFormats.stdFormats)




© 2015 - 2024 Weber Informatics LLC | Privacy Policy