【问题标题】:Add a date to now by parsing the input通过解析输入将日期添加到现在
【发布时间】:2011-11-01 11:17:50
【问题描述】:

我在尝试解析未来的日期时遇到了困难,我希望得到一些帮助!

事情是这样的,我想在当前日期中添加一个解析日期(以便将来使用)。问题是我可以有多种日期格式,例如:

  • dd
  • MM-dd
  • yyyy-MM-dd

因此,如果用户设置了类似5 的内容,则返回的日期将是(在我们的延时摄影中)2011-11-05。 如果他设置02-14,它将是2012-02-14

但是假设我们是4th of november,并且用户设置11-03,它将是2012-11-03,而不是2011-11-03,因为它已经过去了。

我尝试使用 Calendar、Date、SimpleFormat,但我无法让它工作。

我的解析器(使用 SimpleDateFormat)正在工作。

你能帮我存档吗?我不是要一个完整的代码,只是一些能让我走上正轨的东西!

谢谢! :)

【问题讨论】:

    标签: java parsing date


    【解决方案1】:

    由于您有固定的可接受输入日期格式列表,请将 dateFormat 的宽松字段设置为 false 并检查其中一个是否满足您完成的工作或是否引发异常,请转到下一个模式

    dateFormat  = new SimpleDateFormat(PATTERN_ONE);
    dateFOrmat.setLenient(false);
    dateFormat.parse(INPUT_STRING);
    // if an exception is caughtm try with next pattern
    

    【讨论】:

    • 您在描述中说 Lenient:true,但在代码中将其设置为 false。我应该相信哪一个? ;)
    • 你的小费确实帮助我解决了另一个问题:)
    【解决方案2】:

    我在 jodatime - http://joda-time.sourceforge.net/ 方面有很好的经验。签出其中的 Dateformatters。

    它有一个非常广泛的 API,让您可以执行诸如添加和减去日期之类的操作 - 考虑到时区和夏令时等。

    【讨论】:

    • 我尝试使用 DateFormatters,我可以使用它们匹配字符串中的日期,但我怎样才能让它在当前日期 + 给出的内容中? (如果只给出了一天,请将月份和年份设置为当前)?
    • 我不认为有任何内置的东西。但是你可以这样做: foo = new DateTime(); new DateTime(foo.getYear, foo.getMonth, userInputDay, 0, 0, 0);
    • 使用 Joda 并添加时间而不是仅仅使用格式创建它是一种方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-07
    • 2012-10-29
    • 1970-01-01
    相关资源
    最近更新 更多