Java DateTimeFormat.forPattern接受非法模式

Java DateTimeFormat.forPattern接受非法模式,java,jodatime,datetime-format,Java,Jodatime,Datetime Format,DateTimeFormat.forPattern(“2007-05-24 00:00-06:00”)不会引发异常。这是预期的行为吗 在我的逻辑中,我想验证字符串是datetime格式还是实际的datetime字符串。我希望上面的代码能帮助我 JODA版本是2.9.5 JAVA版本:8(更新151) DateTimeFormat.forPattern()返回一个DateTimeFormatter对象。 如果您将错误的模式作为参数传递,它将抛出java.lang.IllegalArgumentE

DateTimeFormat.forPattern(“2007-05-24 00:00-06:00”)
不会引发异常。这是预期的行为吗

在我的逻辑中,我想验证字符串是datetime格式还是实际的datetime字符串。我希望上面的代码能帮助我

  • JODA版本是2.9.5
  • JAVA版本:8(更新151)

DateTimeFormat.forPattern()返回一个
DateTimeFormatter
对象。 如果您将错误的模式作为参数传递,它将抛出
java.lang.IllegalArgumentException
:无效的模式规范。
我建议您使用正则表达式验证该模式。有效日期时间模式的示例

模式中不在['a'..'z']和['a'..'z']范围内的任何字符都将被视为引用文本。您是否动态获取格式?为什么要验证它们?是的,我动态地获取它们。代码不是强类型的,无法区分是日期字符串还是日期格式字符串。这是一种有效的模式。没有要求模式必须包含格式模式字母(尽管不这样做是毫无意义的,我同意你的看法),也没有明显且简单的方法来区分。如果你的字符串有字母而没有数字,它就是一个模式;如果它有数字,没有字母,它是日期时间;但如果两者都有呢?比如
2007-05-24T00:00Z
。我认为你应该根据你的真实数据制定一条经验法则。如果这能回答问题,我不明白怎么做?而这种联系显然是无关紧要的。