在Joda Time中设置默认年份

arr*_*l12 3 java jodatime

我目前在我的应用程序中使用joda dateTime Api.我使用以下代码将多种日期格式解析为一种格式.虽然格式没有一年,但我遇到了麻烦.目前它将年份定为"2000".

如果缺少年份,有没有办法将年份设置为默认值?

private static final DateTimeParser[] parsers = {
  DateTimeFormat.forPattern("dd/MMM/yyyy:HH:mm:ss Z").getParser(),
  DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss").getParser(),
  DateTimeFormat.forPattern("[dd/MMM/yyyy:HH:mm:ss Z]").getParser(),
  DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ").getParser(),
  DateTimeFormat.forPattern("MMM-dd HH:mm:ss,SSS").getParser()
 };

 public static DateTime ConvertDate(String timestamp) {

   DateTimeFormatter formatter = new DateTimeFormatterBuilder().append(null, parsers).toFormatter();

   DateTime date = formatter.parseDateTime(timestamp);
   return date;
}
Run Code Online (Sandbox Code Playgroud)

例: Mar-07 13:59:13,219

2000-03-07T12:59:13.219-07:00

我想要的是 :

例: Mar-07 13:59:13,219

(currentyear)-03-07T12:59:13.219-07:00

Men*_*ild 5

你可以使用withDefaultYear():

public static DateTime convertDate(String timestamp) {

  int stdYear = 1970; // example for new default year

  DateTimeFormatter formatter = 
    new DateTimeFormatterBuilder().append(null, parsers).toFormatter()
    .withDefaultYear(stdYear);

  return formatter.parseDateTime(timestamp);
}
Run Code Online (Sandbox Code Playgroud)