fork(3) download
  1. import java.text.*;
  2. import java.util.*;
  3.  
  4. class Main
  5. {
  6. public static void main (String[] args) {
  7. SimpleDateFormat sdf1 = new SimpleDateFormat("yyyyMMdd");
  8. sdf1.setLenient(false);
  9. Date d = sdf1.parse("20120705", new ParsePosition(0));
  10.  
  11. // ドキュメント読むのを面倒くさがるなよ?>俺。
  12. // http://d...content-available-to-author-only...e.com/javase/7/docs/technotes/guides/intl/calendar.doc.html
  13. // によると、Gが4つ以上連続するときは、「平成」とか「昭和」。そうでないときは「H」「S」
  14. // yが4つ以上連続するときは「元」などに置き換えられる。なおこの部分は通常のルールが適用されない。
  15. // 則ち、yが2つでも、2桁に縮められたりしない。(1996→96)
  16.  
  17. // 第二引数はLocale.JAPANESEではダメなようだ。
  18.  
  19. // ドキュメントに書いてあるとおり、この和暦に使われているCalendarがサポートされるのは1.6からだから、
  20. // アプリケーションをエンドユーザに配るつもりなら
  21. // 「理由をちゃんと述べた上で」「サポートがそのバージョンからであることをエンドユーザに告知する」必要がある。
  22. // 忘れるなよ?(「理由」述べずに外されるのはエンドユーザとしてムカつくだろ?)>俺
  23.  
  24. SimpleDateFormat sdf2 = new SimpleDateFormat("GGGGyyyy年M月d日", new Locale("ja", "JP", "JP"));
  25.  
  26. // まぁ意味の無い行ではあるが、習慣化しておくべし。
  27. sdf2.setLenient(false);
  28.  
  29. System.out.println(sdf2.format(d));
  30.  
  31.  
  32. }
  33. }
Success #stdin #stdout 0.11s 216384KB
stdin
Standard input is empty
stdout
平成24年7月5日