本文介绍了用可变空间解析日期的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用Joda解析日期,并使用不使用前导零的格式,例如:

I am using Joda to parse dates and have a format where leading zeros are not used, e.g.:

 Mon Nov 20 14:40:36 2006
 Mon Nov  6 14:40:36 2006

请注意dayOfMonth字段用空白填充。

Note that the dayOfMonth field is left-padded with a blank.

目前,我似乎必须使用两种不同的格式,如果失败,则重新分析

Currently I seem to have to use two different formats and reparse if one fails

"EEE MMM dd HH:mm:ss yyyy"
"EEE MMM  d HH:mm:ss yyyy"

是否有单一格式(或API开关)处理这两种情况? (SimpleDateFormat的答案是一样的 - 我不用吗?)

Is there a single format (or an API switch) which deals with both cases? (is the answer the same for SimpleDateFormat - which I don't use?)

推荐答案

我刚刚创建了一个快速程序检查这个 -

I have just created a quick program to check this -

SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM d HH:mm:ss yyyy");

try {
    String source1 = "Mon Nov 20 14:40:36 2006";
    Date d1 = sdf.parse(source1);
    String source2 = "Mon Nov  6 14:40:36 2006";
    Date d2 = sdf.parse(source2);

    String res1 = sdf.format(d1);
    String res2 = sdf.format(d2);

    System.out.println(source1 +"="+ res1);
    System.out.println(source2 +"="+ res2);
} catch (ParseException e) {
    e.printStackTrace();
}

这个输出是 -

Mon Nov 20 14:40:36 2006=Mon Nov 20 14:40:36 2006
Mon Nov  6 14:40:36 2006=Mon Nov 6 14:40:36 2006

所以即使source2有额外的空间,仍然会被

So, even though source2 has the extra space, it is still parsed by

EEE MMM d HH:mm:ss yyyy

希望有助于

这篇关于用可变空间解析日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-24 12:47