如何将某些未知语言环境中的String日期转换为其他已知语言环境?

时间:2019-05-23 07:46:34

标签: java date locale date-parsing

我在String对象中有一个日期(例如:(on,22 maj,2019)),该字符串的语言环境日期未知。如您所见,它是在瑞典语区域设置中,但在运行时中我对此一无所知,我只能使用该字符串。我该如何转换,首先解析此字符串,然后将其转换为ex的特定已知语言环境:德语甚至英语。

尝试在Java中使用Dateformatter和SimpleDateFormat,但无法解决问题

2 个答案:

答案 0 :(得分:0)

这非常困难。例如,不同的语言环境对月份和日期的排序方式不同。如果您有一个“纯数字”日期,例如“ 20.10.2016”,则您不确定月份和日期的顺序(通常可以标识年份,因为通常是4位数字,但是可以也是2位数)。 因此,在某些情况下,无法唯一标识日期的语言环境。

例如,如果您有边缘信息,则有一组特定的语言环境可以匹配,或者给定特定位置的可能性,您可以尝试对它们进行解释。但是,您不能绝对确定自己得到了正确的解释。

我的建议是编写正则表达式以标识日期格式,然后使用SimpleDateFormat解析日期。然后使用“责任链”模式尝试所有正则表达式,如果找到匹配项,则可以使用该特定的SimpleDateFormat。

答案 1 :(得分:-2)

我曾经有一个任务是编写一个代码,该代码可以将String解析为迄今尚未事先知道日期格式的日期。即我必须解析任何有效的日期格式。我写了一个项目,然后写了一篇文章,描述了实现背后的想法。这是文章的链接:Java 8 java.time package: parsing any string to date。 General Idea是将希望支持的所有模式写入外部属性文件,然后从那里读取它们,并尝试按一种格式逐一解析String,直到成功或用尽格式为止。请注意,顺序也很重要,因为某些字符串可能对几种格式有效(美国/欧洲差异)。优点是您可以在不更改代码的情况下继续向文件中添加/删除格式。这样的项目也可以针对不同的客户进行定制