2 kevin muqi Kevin_MuQi 于 2015.06.17 18:10 提问

Java 未知格式日期字符串如何转换成日期对象 5C

如题,一种未知的日期格式的字符串如何转换为日期对象
如值可能是
2015-02-06T03:57:23+00:00
2014-10-20 03:24:32.063
8th Apr 2015 02:27
6/13/2015 5:47 PM

等等常规的世界日期格式,如何转成日期对象

9个回答

tongyi55555
tongyi55555   2015.06.17 18:22

只能把可能的格式都列上,然后一个一个匹配,匹配上的就转换,没有匹配上的不转换。

devmiao
devmiao   Ds   Rxr 2015.06.17 18:40

只能用正则表达式依次匹配,然后再调用对应的格式解析。

ycg514230
ycg514230   Rxr 2015.06.17 18:42

你这种本来就很繁杂,只能一种一种的匹配啦,没有简单的方法

u012157999
u012157999   2015.06.17 19:09
Kevin_MuQi
Kevin_MuQi 该文档并没什么用,只提供了普通转换
2 年多之前 回复
codeforcer
codeforcer   2015.06.17 19:53

Java有自带的转换

Kevin_MuQi
Kevin_MuQi 你可以先试试再来回答。看转不转得了
2 年多之前 回复
qkqk931025
qkqk931025   2015.06.17 21:17

SimpleDateFormat的有两个方法可以将字符串和日期类按照你指定的格式互相转换,format方法将date格式化为字符串,parse解析字符串生成date,详情请查阅SimpleDateFormat的API

Kevin_MuQi
Kevin_MuQi 然而你这个并没什么用,再未知格式的情况下SimpleDate类完全行不通
2 年多之前 回复
beacon_2011
beacon_2011   Rxr 2015.06.17 21:18

不能自动识别,只能一种一种匹配,或者用SQL转

Kevin_MuQi
Kevin_MuQi 使用SQL是完全行不通的,因为SQL的Date类型一样只限定了那么几个。一个个匹配是可以,但是有很多种,一个个抓异常或者判断的话很废代码量
2 年多之前 回复
WolfySein
WolfySein   2015.06.19 23:15

个人目前给不了什么比较恰当的方法,但我觉得能提供你一个思路,就是从这些日期格式是怎么出现的这方面入手,如果你知道这些不规则格式的出现原因,那我想你也会想到如何把他们规范化。

Kevin_MuQi
Kevin_MuQi   2015.06.29 14:08

方法找到了。。循环所有格式类型做统配再进行转换。虽然有点耗时,但是最终格式保存到数据库后,数据库缓存格式放入对象中之后速度就很快了。
正则那些很麻烦,而且统配起来不可取,日期和月如果都为数字,完全不能判断。这是个难点,未解决

Csdn user default icon
上传中...
上传图片
插入图片