2013-10-18 32 views
3

我们有一些现有的代码是这样的:消除DateTimeFormat和乔达的DateTimeFormatter之间的细微空白处理差异

DateFormat[] dateFormats = { 
    new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z", Locale.ENGLISH), 
    new SimpleDateFormat("d MMM yyyy HH:mm:ss Z", Locale.ENGLISH) 
}; 

为了线程安全起见,我试图将其转换为使用约达时间的格式化,所以:

DateTimeFormatter[] dateFormats = { 
    DateTimeFormat.forPattern("EEE, d MMM yyyy HH:mm:ss Z") 
        .withLocale(Locale.ENGLISH) 
        .withOffsetParsed(), 
    DateTimeFormat.forPattern("d MMM yyyy HH:mm:ss Z") 
        .withLocale(Locale.ENGLISH) 
        .withOffsetParsed() 
}; 

但是,我惊讶地发现现有的测试案例已经破裂。特别是(至少这将导致测试失败的第一行):

String dateString = "Wed, 1 Feb 2006 21:58:41 +0000"; 

的DateFormat两个或更多个空间愉快匹配逗号之后但DateTimeFormatter仅字面上单个空间相匹配。

我大概可以放入一个额外的格式来允许额外的空间,但这样做有点可怕,那么是否有一种方法可以自定义DateTimeFormatter以更轻松地使用空格?

回答

7

我觉得它更容易解析

str = str.replaceAll(" +", " "); 
+0

这是非常诱人的前处理输入的字符串。 – Trejkaz

+0

我不喜欢这个答案+1 –

相关问题