| 2008/12/02(Tue) 22:56:35 編集(投稿者)
■No28943 (ちん さん) に返信 > 和暦変換をしたくてサイトを調べていたんですが、
簡単なのは、"Microsoft.VisualBasic.Compatibility" を参照設定して、 'Imports Microsoft.VisualBasic.Compatibility.VB6 Dim s As String = Support.Format(dt, "gee年MM月dd日") かな。
----- 追記修正。上記だと、Format 関数等が競合してしまうので、
'Imports Microsoft.VisualBasic.Compatibility Dim s As String = VB6.Format(dt, "gee年MM月dd日")
の方が良いかも。 -----
追加の参照設定無しで行うとなると、下記のように長いコードに…。
'Imports System.Globalization
Function ToShortWareki(ByVal dt As Date) As String Dim jc As New JapaneseCalendar() Dim ci As New CultureInfo("ja-JP", True) ci.DateTimeFormat.Calendar = jc If dt < jc.MinSupportedDateTime OrElse dt > jc.MaxSupportedDateTime Then Return dt.ToString("yyyy年MM月dd日", New CultureInfo("ja-JP", True)) Else Return "MTSH"(jc.GetEra(dt) - 1) & dt.ToString("yy年MM月dd日", ci) End If End Function
Function ToLongWareki(ByVal dt As Date) As String Dim jc As New JapaneseCalendar() Dim ci As New CultureInfo("ja-JP", True) ci.DateTimeFormat.Calendar = jc If dt < jc.MinSupportedDateTime OrElse dt > jc.MaxSupportedDateTime Then Return dt.ToString("yyyy年MM月dd日", New CultureInfo("ja-JP", True)) Else If jc.GetYear(dt) = 1 Then Return dt.ToString("gg元年MM月dd日", ci) Else Return dt.ToString("ggyy年MM月dd日", ci) End If End If End Function
実際に使う際は、作成するアプリの仕様に応じて、MM 書式と M 書式の どちらにするのか、「元年」の表記を行うかどうかなどの修正が必要かも。 |