ミリ秒値の桁数が可変のように見える Web サイトから日付/時刻文字列を受け取りました。
サンプル:
2013-08-15T06:21:49.35054+01:00
2013-08-15T06:21:49.350546+01:00
2013-08-15T06:21:49+01:00
現在私は使用しています:
static final Map<Integer,DateTimeFormatter> parsers = new HashMap<Integer,DateTimeFormatter>();
static {
parsers.put("2013-07-23T22:44:00+01:00".length(),
DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ssZ"));
parsers.put("2013-07-27T18:00:59.9+01:00".length(),
DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SZ"));
parsers.put("2013-07-27T18:00:59.99+01:00".length(),
DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSZ"));
parsers.put("2013-07-27T18:00:59.999+01:00".length(),
DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ"));
parsers.put("2013-07-27T18:00:59.9999+01:00".length(),
DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSZ"));
parsers.put("2013-07-27T18:00:59.99999+01:00".length(),
DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSZ"));
parsers.put("2013-07-27T18:00:59.999999+01:00".length(),
DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSSZ"));
parsers.put("2013-07-27T18:00:59.9999999+01:00".length(),
DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSZ"));
}
public static Date parseDate(String date) {
return parsers.get(date.length()).parseDateTime(date).toDate();
}
これを行うためのよりきちんとした方法はありますか?