【问题标题】:parse dates in java that does not adjust to a format [duplicate]在java中解析不适应格式的日期[重复]
【发布时间】:2015-01-11 23:35:01
【问题描述】:

大家好,我最近被分配了从 excel 工作表中收集一些数据并将它们放入数据库的任务,这里的主要要求是数据必须是可靠的。这里的困难部分是许多字段都是日期,它们没有标准格式,所以我可以用普通的日期解析器解析它们。 例如有些日期看起来像这样"4-Mar 02:35"像这样"5-Mar"像这样

"2.2.13 6:30
" 

像这样"23/2/13 17:45" 和像这样"2.2.13 6.30" 有没有办法以不添加不存在的附加信息到结束日期的方式解析它们?

【问题讨论】:

标签: java parsing date


【解决方案1】:

我会使用 JodaTime (http://www.joda.org/joda-time/),它是灵活的解析器。

这样,您可以为 DateTimeparser 定义多个模式。

例如:

DateTimeFormatter dateTimeFormatter=
DateTimeFormat.forPattern("dd/MM/yy hh:mm") ;

DateTimeFormatter dateTimeFormatterWithTimeZone=
DateTimeFormat.forPattern("d.M.YY hh:mm");

DateTimeFormatter optionalTimeZoneFormatter=
new DateTimeFormatterBuilder()
.append(null, //because no printing is required
new DateTimeParser[]{dateTimeFormatter.getParser(),
dateTimeFormatterWithTimeZone.getParser()}).toFormatter();

在这篇博文中有更详细的解释:http://edgblog.wordpress.com/2014/02/17/jodatime-goodies-flexible-parsing/

最好的问候

【讨论】:

  • 谢谢你,但你能给我举个例子,解析这种日期“4-Mar 02:35”的方法是什么
  • 你必须通过 Pattern 来定义它。 An overview of the constans can be found here。我上面回答中的两个例子已经是你给出日期的例子。第一个格式化程序将解析"23/2/13 17:45" 第二个"2.2.13 6.30" 据我记得,为了解析由其名称给出的月份,您必须使用MMM。也可以看看博客的链接。
猜你喜欢
  • 1970-01-01
  • 2020-11-16
  • 2015-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-03
  • 2015-12-26
相关资源
最近更新 更多