public static void main(String[] args) {
Date now = new Date();
String dateString = now.toString();
System.out.println(" 1. " + dateString);
SimpleDateFormat format = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy");
try {
Date parsed = format.parse(dateString);
System.out.println(" 2. " + parsed.toString());
} catch (ParseException pe) {
System.out.println("ERROR: Cannot parse \"" + dateString + "\"");
}
System.out.println(" 3. " + format.format(now));
}
コンソールでの印刷:java SimpleDateFormat?
1. Thu Feb 23 17:14:51 CET 2017
ERROR: Cannot parse "Thu Feb 23 17:14:51 CET 2017"
3. jeu. févr. 23 05:14:51 CET 2017
の代わりには:
1. Thu Feb 23 17:14:51 CET 2017
2. Thu Feb 23 17:14:51 CET 2017
3. jeu. févr. 23 05:14:51 CET 2017
3はシステムロケールがフランス語であることを示します。したがって、 "Thu Feb"はフランス語名のみを想定しているため、フォーマッタは認識しません。 – Thomas
Bonjour、古いスタイルのクラス「Date」と「SimpleDateFormat」をまだ使用している理由はありますか? 'java.time'の新しいクラス(Java 8以降)は、デフォルトのフォーマットとロケールについて同意する' toString'メソッドと 'parse'メソッドを持っていますので、このような問題を解決します。 –