【问题标题】:SimpleDateFormat parsing and ambigious date formatsSimpleDateFormat 解析和不明确的日期格式
【发布时间】:2011-08-11 21:31:17
【问题描述】:

我试图从日期格式 HH 中拒绝“18:00”的解析(通过 SimpleDateFormat::parse)。有没有办法在没有额外代码的情况下实现这一点?日期格式是否接受 $/正则表达式?我已将 setLenient 启用为 false,并且 18:00 仍然通过 HH 日期格式。

我意识到我可以对正在解析的字符串进行其他比较,但我正在寻找一种在 DateFormat 字符串中执行此操作的方法。

【问题讨论】:

  • 你不能用 'HH' 来做,但你可以用 'hh' 来做(我假设你希望人们在这里只输入 1 - 12 小时......)。

标签: java parsing date


【解决方案1】:

不,SDF 不允许“规则”。它只是根据模式解析和格式化日期,而不是正则表达式类型的模式,所以没有正则表达式。

【讨论】:

    【解决方案2】:
    1. SimpleDateFormat 确实执行了一种验证 - 如果您尝试解析不表示指定格式的字符串,它将抛出 ParseException(尽管 Javadoc 关于仅在开始时抛出异常不符合格式(http://download.oracle.com/javase/1.4.2/docs/api/java/text/DateFormat.html#parse(java.lang.String)))。

    2. 如果日期格式只是“HH”,则字符串“18:00”符合该格式。如果日期格式是“HH:MMM”(2 位数小时,后跟 3 个字母月份),那么这可能会引发 ParseException。

    如果您尝试像这样进行验证,那么我建议您使用正则表达式,甚至只使用 Java 代码。我不确定你想要达到什么目标,所以恐怕我无法提供进一步的建议。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-11
      • 2012-11-09
      • 1970-01-01
      • 2012-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-28
      相关资源
      最近更新 更多