【问题标题】:SimpleDateFormat parsing a non date StringSimpleDateFormat 解析非日期字符串
【发布时间】:2015-01-20 17:16:01
【问题描述】:

我遇到了SimpleDateFormat 解析非日期字符串的问题。 这是使用的代码减少到最低限度:

public class TestAddressAgainstDate {
  public static void main(String[] args) throws ParseException {
    SimpleDateFormat oFormat = new SimpleDateFormat( "yyyy-MM-dd" );
    String m_sColumnValue = "3-21-1, Nihombashi Hama-Cho";
    Date oDate = oFormat.parse( m_sColumnValue  );
    System.out.println(oDate);
  }
}

输出如下:

9 月 1 日星期一 00:00:00 CET 4

此代码用于测试字符串是否为日期,因为处理器还从 XML 接收日期字符串。 我的问题是我无法更改将字段作为字符串获取的行为,而且我还需要处理从中获取日期的问题。

有人知道如何解决这个问题吗?

最初的想法是捕获 ParseException 并将其视为不是日期,但日本地址毁了它。 :-)

提前致谢

编辑:

我有另一个字符串,即使使用 setLenien(false) 也会导致问题。

 String m_sColumnValue = "1-5-1 Ohtemachi, Chiyoda-Ku4";

有人有想法吗?

【问题讨论】:

  • 3-21-1 被解释为 yyy3-21-d1
  • @reimeus 你有什么想法吗?
  • 仅供参考,在这里留言不会给我任何通知
  • 我是这么认为的,帮助说明
  • 我正在使用一种解决方法来检查逗号,因为 afaik no date 使用逗号进行分隔。

标签: java date simpledateformat


【解决方案1】:

使用setLenient验证输入日期String

oFormat.setLenient(false);

【讨论】:

  • 谢谢,效果很好。我没有看到setLenient 选项。
  • @LostKatana:请查看What should I do when someone answers my question? 了解更多关于本网站最佳行为的信息。
  • 我会检查它,但我不能,因为我需要等待 10 分钟...感谢您的提醒:-/
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-28
  • 2020-04-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多