Pages

2015/01/13

[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 + "年)");
}
Related Posts Plugin for WordPress, Blogger...