[C#] for のカウントを減らして 年と和暦を作成する

誕生日などの生年月日の選択リストの元データを作る際、当年から何年前までの年データを作成する場合、for のループを減らしていくと簡単に作成できる。
和暦は JapaneseCalendar クラスを使用して変換すると楽。以下はデリゲートを使用しているが、それぞれ外部に共通化したほうが使い勝手は良い。
Func getwarekiName = (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 + "年)");
}

このブログの人気の投稿

コピーした行の挿入が表示されない時はフィルタされていないかチェック

Excel で一部の図形だけ固定する