现在明白了。好的,有一个比分叉更简单的解决方案。这里:
trait DateParsers extends RegexParsers {
def dateTime(pattern: String): Parser[DateTime] = new Parser[DateTime] {
val dateFormat = DateTimeFormat.forPattern(pattern);
def jodaParse(text: CharSequence, offset: Int) = {
val mutableDateTime = new MutableDateTime
val maxInput = text.source.subSequence(offset, dateFormat.estimateParsedLength + offset).toString
val newPos = dateFormat.parseInto(mutableDateTime, maxInput, 0)
(mutableDateTime.toDateTime, newPos + offset)
}
def apply(in: Input) = {
val source = in.source
val offset = in.offset
val start = handleWhiteSpace(source, offset)
val (dateTime, endPos) = jodaParse(source, start)
if (endPos >= 0)
Success(dateTime, in.drop(endPos - offset))
else
Failure("Failed to parse date", in.drop(start - offset))
}
}
}