[C#] for のカウントを減らして 年と和暦を作成する
誕生日などの生年月日の選択リストの元データを作る際、当年から何年前までの年データを作成する場合、for のループを減らしていくと簡単に作成できる。
和暦は JapaneseCalendar クラスを使用して変換すると楽。以下はデリゲートを使用しているが、それぞれ外部に共通化したほうが使い勝手は良い。
和暦は JapaneseCalendar クラスを使用して変換すると楽。以下はデリゲートを使用しているが、それぞれ外部に共通化したほうが使い勝手は良い。
FuncgetwarekiName = (era) => { string warekiName = string.Empty; switch (era) { case 1: warekiName = "明治"; break; case 2: warekiName = "大正"; break; case 3: warekiName = "昭和"; break; case 4: warekiName = "平成"; break; } return warekiName; }; int currentYear = DateTime.Today.Year; for (; currentYear >= DateTime.Today.Year - 100; currentYear--) { // 西暦だけで良ければ currentYear にセットされた値をそのまま使用すれば良い。 Console.WriteLine(currentYear + "年"); } currentYear = DateTime.Today.Year; for (; currentYear >= DateTime.Today.Year - 100; currentYear--) { // 和暦が欲しい場合は using System.Globalization を追加してから変換する。 JapaneseCalendar calendar = new JapaneseCalendar(); int wareki = calendar.GetYear(new DateTime(currentYear, 1, 1)); int era = calendar.GetEra(new DateTime(currentYear, 1, 1)); Console.WriteLine(currentYear + "(" + getwarekiName(era) + wareki + "年)"); }