none
DateTimePickerで和暦を表示させる方法 RRS feed

  • 質問


  • こんにちわ。
    現在、Visual C# 2008でシステムの開発に参加しています。
    C#どころか、すべての言語において初心者です。

    DateTimePickerで和暦を表示させる方法について、助言をお願いします。
    下記のサイトを参考にしてみたのですが、上手くいきません。

    http://blogs.wankuma.com/mnow/archive/2006/05/21/26510.aspx

    和暦で表示されることはされるのですが、年号(平成や昭和など)が表示できません。
    "21年8月7日"ではなく、"平成21年8月7日"のように表示させたいのですが、
    どうすれば実現可能でしょうか?

    どうぞ、よろしくお願いします。
    2009年8月7日 8:50

回答

  • 私のページですね。
    dateTimePicker1.Format = System.Windows.Forms.DateTimePickerFormat.Custom; が要りますが「和暦で表示されることはされるのですが」と書いてあるのでこれはやってあるのでしょう。
    やってみましたがきちんと表示されていました。
    この場合の肝は「 dateTimePicker1.Value.ToString("gg yy", culture) 」なのでこの値を Debug.WriteLine とかで表示させて確認してみてください。

        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
            {
                System.Globalization.Calendar calendar = new System.Globalization.JapaneseCalendar();
                System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("ja-JP");
                culture.DateTimeFormat.Calendar = calendar;
                this.dateTimePicker1.CustomFormat = dateTimePicker1.Value.ToString("gg yy", culture) +
                 "年MM月dd日 dddd tt hh:mm:ss";
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                dateTimePicker1_ValueChanged(dateTimePicker1, new EventArgs()); 
            }
        }
    

    えムナウ@わんくま同盟 Microsoft MVP Visual Studio C# Since 2005/01-2009/12
    2009年8月7日 9:58

すべての返信

  • 私のページですね。
    dateTimePicker1.Format = System.Windows.Forms.DateTimePickerFormat.Custom; が要りますが「和暦で表示されることはされるのですが」と書いてあるのでこれはやってあるのでしょう。
    やってみましたがきちんと表示されていました。
    この場合の肝は「 dateTimePicker1.Value.ToString("gg yy", culture) 」なのでこの値を Debug.WriteLine とかで表示させて確認してみてください。

        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
            {
                System.Globalization.Calendar calendar = new System.Globalization.JapaneseCalendar();
                System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("ja-JP");
                culture.DateTimeFormat.Calendar = calendar;
                this.dateTimePicker1.CustomFormat = dateTimePicker1.Value.ToString("gg yy", culture) +
                 "年MM月dd日 dddd tt hh:mm:ss";
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                dateTimePicker1_ValueChanged(dateTimePicker1, new EventArgs()); 
            }
        }
    

    えムナウ@わんくま同盟 Microsoft MVP Visual Studio C# Since 2005/01-2009/12
    2009年8月7日 9:58
  • こんにちは、フォーラムオペレーターの高橋春樹です。

    えムナウさん、いつもお世話になってます。
    サンプルコードの投稿ありがとうございます。
    分かり易くて、大変助かります。

    Aboutyさん、初めまして。
    MSDNフォーラムのご利用ありがとうございます。

    えムナウさんからアドバイスを頂いたと思うのですが、その後如何でしょうか?
    えムナウさんもおっしゃってるように、dateTimePicker1.FormatをCustumに設定する必要があるのでお忘れなく。

    今回えムナウさんからの投稿が、有用なものだと思いましたので、勝手ながら回答マークを付けさせて頂きました。
    次回からで良いのですが、もし問題が解決した場合は、Aboutyさんの方で、回答マークを付けて頂くと助かります。
    問題が解決していない場合は、状況をお伝えして頂ければと思います(^-^)

    今後ともMSDNフォーラムを宜しくお願いします。


    マイクロソフト株式会社 フォーラム オペレータ 高橋春樹
    2009年8月14日 5:10
  • 回答ありがとうございます。

    返信が遅れて申し訳ありません。
    夏休みを頂いていました。

    おかげさまで年号が表示できるようになりました。
    ありがとうございました。
    2009年8月19日 7:39