【问题标题】:Setting default year in Joda Time在 Joda Time 中设置默认年份
【发布时间】:2014-06-25 01:58:22
【问题描述】:

我目前在我的应用程序中使用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;
}

示例: 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

【问题讨论】:

    标签: java jodatime


    【解决方案1】:

    你可以使用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);
    }
    

    【讨论】:

      【解决方案2】:

      由于 Joda 2.0 的默认年份是 2000,因此可以正确解析 2 月 29 日,请检查 this

      不确定是否可以更改(检查 this 与 pivotYear),但作为绕过解决方案,如果没有,我会将当前年份添加到我的时间戳中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多