0

JodaTimeで

DateTimeFormatter dtf = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss'Z'").withZone(DateTimeZone.UTC);
java.util.Date parsedDate = dtf.parseDateTime("-012-10-25T10:03:22Z").toDate();

System.out.println(parsedDate)

プリント

'Tue Oct 27 04:03:22 CST 13'

お分かりのように、ローカルタイムゾーンはCSTです。

渡された日付が予期された形式ではないため、例外がスローされることを期待しています。またはのNumberFormatExceptionである可能性があり、「-」は数値ではありません

4

1 に答える 1

3

Joda は 0 年より前の年をサポートしています (DateTimeConstants.BCこれはキリスト以前を意味します)。
Joda-012-10-25T10:03:22Zは紀元前 12 年のように扱われます

DateTime d = dtf.parseDateTime("-012-10-25T10:03:22Z");
System.out.println(d.getEra()); // returns 0 -> that means B.C. era Before Christ
System.out.println(d.getYear()); // returns -12  

例外をスローしたい場合は、手動で行う必要があります。この場合、Joda は例外をスローしないためです。みたいなことをする

   DateTime dateTimeParser(String dateAsString)  
   {  
      DateTime res = dtf.parseDateTime(dateAsString);
      if (d.getYear() < 0) throw new IllegalArgumentException();  
      return res;  
   } 

またはSimpleDateFormatを使用して解析しますDate

于 2012-12-10T21:49:02.883 に答える