0
文字列パターンで指定された年(およびおそらく他のいくつかの時間フィールド)がある場合、他の不在フィールドを最低値に設定します。例えば、従来のJava 8に私のコードは、java.time
フォーマッタで、2015.01.01 00:00:00 GMT
Java 8は、すべてのフィールドが含まれていない文字列からZonedDateTimeを解析します。
しかし私を返し
String source = "2015";
String pattern = "yyyy";
DateFormat sdf = new SimpleDateFormat(pattern);
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = null;
try {
date = sdf.parse(source);
} catch (ParseException e) {
e.printStackTrace();
}
SimpleDateFormat sdfGMT2 = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss z");
sdfGMT2.setTimeZone(TimeZone.getTimeZone("GMT"));
String newf = sdfGMT2.format(date);
System.out.println(newf);
のように見えたがTemporalAccessor
返します。私は古いAPIと同じように
java.time.format.DateTimeParseException: Text '2008' could not be parsed: Unable to obtain ZonedDateTime from TemporalAccessor: {WeekBasedYear[WeekFields[SUNDAY,1]]=2008},ISO of type java.time.format.Parsed
どのように私は、Java 8時間のAPIと同じ結果が得られない:以下のコードは、例外
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("YYYY");
ZonedDateTime zonedDateTime = ZonedDateTime.parse("2008", fmt);
例外がスローされますか?
私は '.appendPattern(" YYYY ")'にする必要がありますか? – Antonio
それは、上記の 'appendValue()'がやっていることです。しかし、 'appendPattern()'を使うのであれば、 '' yyyy'(http://docs.oracle.com/javase/8/docs/api/java/time/temporal/ChronoField.html#YEAR)を使うべきです。 [YYYY](http://docs.oracle.com/javase/8/docs/api/java/time/temporal/WeekFields.html#weekBasedYear--)の代わりに –
はい、「YYYY」は例外を発生させます。ありがとう、それは助け!私は別のスレッドで別の質問をし、私はあなたを歓迎します:) – Antonio