challenge 西暦 to 和暦

西暦を和暦に変換するプログラムを書いてください。元号の切り替わる日など、複数の表記が可能な場合には両方表示し、西暦が無効な日付の場合には「範囲外」と表示するようにしてください。対応すべき日付は明治元年以降とします。

>a.py 1868/12/2
明治1年12月2日

>a.py 1926/12/24
大正15年12月24日

>a.py 2007/12/01
平成19年12月1日

>a.py 1926/12/25
大正15年12月25日 昭和1年12月25日

>a.py 1868/1/2
範囲外

>a.py 1868/100/2
範囲外

Posted feedbacks - C#

暫定で

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                CultureInfo culture = new CultureInfo("ja-JP", true);
                culture.DateTimeFormat.Calendar = new JapaneseCalendar();
                DateTime datetime = DateTime.Parse(args[0]);
                Console.WriteLine(datetime.ToString("ggyy年M月d日", culture));
            }
            catch
            {
                Console.WriteLine("範囲外です");
            }
        }
    }

とりあえず、明治6年1月1日以前を範囲外としてあります。

>trans.exe 1868/12/2
範囲外

>trans.exe 1926/12/24
大正15年12月24日

>trans.exe 2007/12/01
平成19年12月1日

>trans.exe 1926/12/25
大正15年12月25日 昭和1年12月25日

>trans.exe 1868/100/2
範囲外

>trans.exe 1868/1/2
範囲外
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
using System;
using System.Globalization;

class Program
{
    static void Main(string[] args)
    {
        CultureInfo culture = new CultureInfo("ja-JP", true);
        DateTime date;
        string[] tmp;
        int y, m, d;

        culture.DateTimeFormat.Calendar = new JapaneseCalendar();

        try {
            tmp = args[0].Split('/');
            y = int.Parse(tmp[0]);
            m = int.Parse(tmp[1]);
            d = int.Parse(tmp[2]);
            date = new DateTime(y, m, d);

            if (DateTime.Compare(date, new DateTime(1873, 1, 1)) < 0)
                throw new Exception();

            if (y == 1912 && m == 7 && d == 30)
                Console.Write("明治45年7月30日 ");
            else if (y == 1926 && m == 12 && d == 25)
                Console.Write("大正15年12月25日 ");

            Console.WriteLine(date.ToString("ggy年M月d日", culture));

        }
        catch {
            Console.WriteLine("範囲外");
            return;
        }

    }
}

Index

Feed

Other

Link

Pathtraq

loading...