- PR -

西暦の和暦変換について教えてください☆

投稿者投稿内容
ゆうき
会議室デビュー日: 2004/01/19
投稿数: 1
投稿日時: 2004-01-19 18:11
超初心者です。助けてください・・(´д⊂ シクシク
VB.NETで西暦で取得した日付を和暦に変換して帳票に出力したいのですが、
10未満の年は一桁で表示したいのです。(例:平成 9年11月23日)
「.NET TIPS 西暦と和暦を変換するには?」のサンプルを参考にさせてもらった
のですが、ゼロが表示されてしまいます。何か良い方法はないでしょうか。
よろしくお願いします。
コードを以下に表記します。これだと「平成09年1月19日」になっちゃうんですよね・・。

Dim culture As CultureInfo = New CultureInfo("ja-JP", True)
culture.DateTimeFormat.Calendar = New JapaneseCalendar()
Dim m_Sakuseibi As String

m_Date = "1995/1/19"
m_Sakuseibi = m_Date.ToString("ggy年M月d日", culture)
txtSakuseibi.Text = m_Sakuseibi & " 作成"







Jubei
ぬし
会議室デビュー日: 2002/03/02
投稿数: 830
お住まい・勤務地: 関西
投稿日時: 2004-01-20 07:31
諸農です。

確かにドキュメントに記載されているようにはならないですね。。(>_<)

別の方法でやってみてはいかがですか。
C#ですが、こんな感じです。
コード:
JapaneseCalendar ca = new JapaneseCalendar();
string [] gg = { "明治", "大正", "昭和", "平成" };

DateTime dt = DateTime.Parse("1995/1/19");
label1.Text = string.Format("{0} {1}年{2}月{3}日",
                            gg[ca.GetEra(dt)-1],
                            ca.GetYear(dt),
                            ca.GetMonth(dt),
                            ca.GetDayOfMonth(dt));



ではでは(^^)/
_________________
諸農和岳
Powered by Turbo Delphi & Microsoft Visual Studio 2005

十兵衛@わんくま同盟
http://blogs.wankuma.com/jubei/
NYRL
ベテラン
会議室デビュー日: 2003/07/14
投稿数: 90
投稿日時: 2004-01-20 09:32
場当たり的ですが

年が10以下なら年の2つ前(0の前)で切ってくっつけるというのもあります。
コード:
    If culture.DateTimeFormat.Calendar.GetYear(m_Date) < 10 Then
      Dim m_NenPos As Integer
      m_NenPos=m_Sakuseibi.indexof("年")
      m_Sakuseibi=m_Sakuseibi.substring(0,m_NenPos-2) + " " + m_Sakuseibi.substring(m_NenPos-1)
    End If

べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2004-01-20 11:01
上記の
m_Sakuseibi = m_Date.ToString("ggy年M月d日", culture)
の部分を
m_Sakuseibi = m_Date.ToString("gg", culture) _
+ culture.DateTimeFormat.Calendar.GetYear(m_Date).ToString() _
+ m_Date.ToString("年M月d日", culture)
とする方法も考えられます。GetYearはIntegerで返るので頭の0はとれるわけです。
さる
会議室デビュー日: 2003/08/29
投稿数: 3
投稿日時: 2004-01-20 11:33
こんなの使ってます。
m_Sakuseibi = m_Date.ToString("ggy年M月d日", culture).Replace("年0","年").Replace("月0", "月")
るぱん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 1370
投稿日時: 2004-01-20 11:35
るぱんです。

強引なやり方の一つを紹介します。
1.文字列としてStringに格納
2.Replace関数を使って"0"→""に変換
3.結果を表示。

邪道ですけど、いかがでしょう?

ポイント
・表記的な問題は出力部分で表示させる。
・内部変数では定型表記で保存しておきたい。

です。

ただ、出力したデータを読み取って又何かし始めるということになると
変数の取り扱いが注意です。

以上
platini
大ベテラン
会議室デビュー日: 2002/12/03
投稿数: 193
投稿日時: 2004-01-20 11:37
>m_Sakuseibi = m_Date.ToString("ggy年M月d日", culture).Replace("年>0","年").Replace("月0", "月")

なるほど。非常に単純明快なコードでいいですね。これ。
なみへー
会議室デビュー日: 2003/11/13
投稿数: 10
投稿日時: 2004-01-20 13:33
なみへーです。
引用:

るぱんさんの書き込み (2004-01-20 11:35) より:
るぱんです。

強引なやり方の一つを紹介します。
1.文字列としてStringに格納
2.Replace関数を使って"0"→""に変換
3.結果を表示。


??
Replace関数だと
平成15年01月10日⇒平成15年1月1日
になってしまう気がします・・・

スキルアップ/キャリアアップ(JOB@IT)