首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何仅解析四位数年份(与Joda时间)?

如何仅解析四位数年份(与Joda时间)?
EN

Stack Overflow用户
提问于 2009-10-23 08:46:14
回答 3查看 2.5K关注 0票数 5

是否有办法强迫Joda time只在日期包含4位数年份时才解析它们?例如:

  • 2009年-11-11-应分析
  • 09-11-11 -不应解析

尝试了以下代码:

代码语言:javascript
复制
DateTimeFormatterBuilder builder = new DateTimeFormatterBuilder();
DateTimeFormatter formatter = builder.appendYear(4, 4).appendLiteral('-').appendMonthOfYear(1).appendLiteral('-').appendDayOfMonth(1).toFormatter();
formatter.parseDateTime("09-11-11");

分析到0009-11-11。显然,方法minDigits中的appendYear只用于打印日期时的格式设置。

如果我使用appendYearOfEra(),结果是相同的。如果我使用appendYearOfCentury(),它会将年份解析为1909年。

我们正在实现一个通用数据解析器,它将识别各种类型的输入。此外,这个例子是真实交易的缩写形式(为了简单起见)。现实生活场景分析日期,可以有平日,月份作为文字,时间,区域和不同的字符分隔月,日和年。因此,编写RegEx或检查字符串的内容/长度可能会非常困难。

一些实际的例子可能如下所示:

  • 2009-11-11
  • 2009年星期三-11-11 T15:00:00
  • 2009/11/11 15:00
  • 还有更多..。
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-11-11 11:38:29

DateTimeFormatterBuilder#appendFixedDecimal()很可能会做你需要做的事情。

或者,您可以实现DateTimeParser接口来创建任何您想要的解析器,并将其传递给DateTimeFormatterBuilder

票数 9
EN

Stack Overflow用户

发布于 2009-10-23 08:58:34

您可以使用DateTimeFormatterBuilder构建非常特定的解析器和格式化程序。通常不需要直接使用这个类,因为大多数常见的格式在API的其他地方更容易获得,但这是他们在幕后使用的构建器类。

票数 1
EN

Stack Overflow用户

发布于 2009-10-23 09:13:19

您可以检查日期字符串的长度。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1612150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档