2012-02-16 83 views
4

是否有可能建立一個單一的DateTimeParser這將解析:自由日期/時間喬達時間解析

  • 給定
  • 日期不受時間時間日期(假設時間是一天的開始)
  • 次無日期(假定日期是今天)

或者我需要有三個獨立的解析器,並嘗試與每一個解析字符串?

換句話說,是否可以在解析器中定義可選字段?

回答

3

org.joda.time.format.ISODateTimeFormat有一個靜態方法dateOptionalTimeParser()使用下面的代碼的基礎上,DateTimeFomatterBuilder類,它有一個appendOptional方法 - 你可能會能夠方法適應你的需求...鏈接:http://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormatterBuilder.html

public static DateTimeFormatter dateOptionalTimeParser() { 
    if (dotp == null) { 
     DateTimeParser timeOrOffset = new DateTimeFormatterBuilder() 
      .appendLiteral('T') 
      .appendOptional(timeElementParser().getParser()) 
      .appendOptional(offsetElement().getParser()) 
      .toParser(); 
     dotp = new DateTimeFormatterBuilder() 
      .append(dateElementParser()) 
      .appendOptional(timeOrOffset) 
      .toFormatter(); 
    } 
    return dotp; 
}