从字符串中查找时间戳模式

时间:2012-02-06 07:09:42

标签: java timestamp

我想将String转换为Timestamp,其模式未知。是否有java给出的API允许我们输入字符串并返回可能使用它的可能模式?我知道可以有一些预定义的模式,可以解析和检查String。但是,由于这是一个时间戳,不同日期和时间的数字组合将相当多。因此,正在寻找一种有效的方法来确定String-Timestamp的模式。

2 个答案:

答案 0 :(得分:0)

@Eugene指出,从未听说过像这样的现成库,所有模式的可能组合很大,所以可能没有这样的库。 我建议重新考虑你的架构。

如果你只想玩这样的东西,你可以创建自己的实现。 让我们说你解析输入然后你找出整数数组 (09, 21, 12, 0, 44, 33) ,你可以假设数组包含年,日,月,分,小时和秒(不确定你是否可以假设 - 它只是一个例子)

拥有该数组后,您可以创建此数组的所有可能排列 - example here

然后,您可以为每个组合创建一个Date对象:

DateTime dt = new DateTime(09, 12, 21, 0, 44, 33, 0);

(以上示例适用于JodaTime

如果您知道例如年份值将始终以4个字符发送,那么当然可能的组合数量会减少,您可以进一步假设“26”不会是月份的值等等。您可能明白了。

答案 1 :(得分:0)

在这种情况下,首先我会切换到Joda Time:http://joda-time.sourceforge.net/

然后我会生成一些(尝试尽可能减少可能性,因为有太多的方式)模式并尝试日期。如果它没有抛出错误(也就是说它适合,将它放在一个数组中),那么返回数组。这可能是一个非常优化的解决方案,但这是我要开始的地方。

我真的不认为有这样的图书馆。此外,您可能想解释为什么要这样做。可能解决方案有点简单。

干杯, 尤金。