java - 来自 joda-time DateTimeFormatter 的模式字符串?

标签 java jodatime

是否可以从 joda-time DateTimeFormatter 获取模式字符串?

DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyyMMdd");
String originalPattern = formatter. ???

最佳答案

Joda Time 不提供从 DateTimeFormatter 获取原始模式的方法。一个原因可能是 DateTimeFormatter 不一定是根据模式创建的;例如 DateTimeFormat.forStyle() 根本不使用模式。

但是,如果您总是使用模式,则可以包装 DateTimeFormat 类以在构造 DateTimeFormatter 时记录模式。这样你以后就可以用一个简单的静态方法来查找它。例如:

public class ReversableDateTimeFormat {

  private static final Map<DateTimeFormatter, String> patternHistory = new HashMap<DateTimeFormatter, String>();

  public static DateTimeFormatter forPattern(String pattern) {
    DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern(pattern);
    patternHistory.put(dateTimeFormatter, pattern);
    return dateTimeFormatter;
  }

  public static String getPattern(DateTimeFormatter dateTimeFormatter) {
    return patternHistory.get(dateTimeFormatter);
  }

}

然后你可以这样做:

DateTimeFormatter formatter = ReversableDateTimeFormat.forPattern("yyyyMMdd");
String originalPattern = ReverseableDateTimeFormat.getPattern(formatter);

关于java - 来自 joda-time DateTimeFormatter 的模式字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10490951/

相关文章:

java - 将 DATETIME 从 SQLite 解析为 java.SQL.Timestamp 时出错

java - 是java中的类型转换还是其他什么?

scala - Joda Time 类没有任何构造函数……为什么?我做错了什么?

java - 在 Java 错误中添加日期

java - JodaTime解析日期+时间+半天忽略半天字段

java - 无法使用 isLowerCase 找到符号

java - Android - 调用 "finish()"不会触发 onDestroy

java - 任何人都可以帮助调试我的简单 Java 计算器吗?

java - Joda 持续时间转换为最接近的上限

使用 joda 日期时间的 Scala 日期时间转换