DOBON.NET DOBON.NETプログラミング掲示板過去ログ

VB.NET 2003 和暦->西暦への変換について

環境/言語:[Win2000 XP ]
分類:[.NET]

西暦->和暦に変換はあったのですがその逆がみつかりません。
4160713 --> 20040713に変換するようなものは.NETにあるのでしょうか?
VBだと format(now,"gyymmdd")ですぐできたのに。。。。
どなたか知っている方よろしくお願いします。
KENさん、こんにちは。

> 西暦->和暦に変換はあったのですがその逆がみつかりません。
> 4160713 --> 20040713に変換するようなものは.NETにあるのでしょうか?
> VBだと format(now,"gyymmdd")ですぐできたのに。。。。
> どなたか知っている方よろしくお願いします。

VB6以前の時代にあった便利なformatは無くなりました。
その代わり、System.Globalization.JapaneseCalendarを使って
和暦に関する情報を得ることができます。
ちなみに、私のサイトには和暦変換関数のサンプルがありますので、参考に見てはどうですか?
2004/07/13(Tue) 15:22:16 編集(投稿者)

■No4813に返信(KENさんの記事)

 KENさん、こんにちは。深山と申します。

> 西暦->和暦に変換はあったのですがその逆がみつかりません。
> 4160713 --> 20040713に変換するようなものは.NETにあるのでしょうか?

 ここでいう「西暦->和暦に変換」とは『日付型から文字列型への変換』、
「4160713 --> 20040713に変換」とは『文字列型から日付型への変換』という解釈で
よろしいでしょうか?
 どちらにせよ、
> VBだと format(now,"gyymmdd")ですぐできたのに。。。。
と噛み合わない気もしますけど(^_^;)、上述の前提で回答させて頂きます。
# 意図を外してるようでしたら流して下さいませ。


 結論からいうと(多分)直接変換することは出来ません。
 "4160713" にある先頭の "4" は平成を表してるのだと思われますが、この対応付けを
行うものが書式指定文字列にありませんから。
 ただ、これが "平成160713" なら以下のような形で変換することが可能です。

    Dim ci As System.Globalization.CultureInfo = New System.Globalization.CultureInfo("ja-JP")
    Dim format As System.Globalization.DateTimeFormatInfo = ci.DateTimeFormat
    format.Calendar = New System.Globalization.JapaneseCalendar()

    Console.WriteLine(DateTime.ParseExact("平成160713", "gyyMMdd", format))


 DateTimeFormatInfo クラスの GetEraName メソッドを使用することで 4 から "平成" を
取得することができますので、一旦文字列を加工すればお望みの結果が得られると思います。


# あぁ、とろとろ書いてたら先に返信が(汗)
■No4818に返信(ぺがらぼさんの記事)
> KENさん、こんにちは。
>
>>西暦->和暦に変換はあったのですがその逆がみつかりません。
>>4160713 --> 20040713に変換するようなものは.NETにあるのでしょうか?
>>VBだと format(now,"gyymmdd")ですぐできたのに。。。。
>>どなたか知っている方よろしくお願いします。
>
> VB6以前の時代にあった便利なformatは無くなりました。
> その代わり、System.Globalization.JapaneseCalendarを使って
> 和暦に関する情報を得ることができます。
> ちなみに、私のサイトには和暦変換関数のサンプルがありますので、参考に見てはどうですか?

ぺがらぼさん!ありがとうございます!
とても参考になりました!昨日からずっと探してました。
感謝感謝です(^。^)
解決済み!
■No4821に返信(深山さんの記事)
> 2004/07/13(Tue) 15:22:16 編集(投稿者)
>
> ■No4813に返信(KENさんの記事)
>
>  KENさん、こんにちは。深山と申します。
>
>>西暦->和暦に変換はあったのですがその逆がみつかりません。
>>4160713 --> 20040713に変換するようなものは.NETにあるのでしょうか?
>
>  ここでいう「西暦->和暦に変換」とは『日付型から文字列型への変換』、
> 「4160713 --> 20040713に変換」とは『文字列型から日付型への変換』という解釈で
> よろしいでしょうか?
>  どちらにせよ、
>>VBだと format(now,"gyymmdd")ですぐできたのに。。。。
> と噛み合わない気もしますけど(^_^;)、上述の前提で回答させて頂きます。
> # 意図を外してるようでしたら流して下さいませ。
>
>
>  結論からいうと(多分)直接変換することは出来ません。
>  "4160713" にある先頭の "4" は平成を表してるのだと思われますが、この対応付けを
> 行うものが書式指定文字列にありませんから。
>  ただ、これが "平成160713" なら以下のような形で変換することが可能です。
>
> Dim ci As System.Globalization.CultureInfo = New System.Globalization.CultureInfo("ja-JP")
> Dim format As System.Globalization.DateTimeFormatInfo = ci.DateTimeFormat
> format.Calendar = New System.Globalization.JapaneseCalendar()
>
> Console.WriteLine(DateTime.ParseExact("平成160713", "gyyMMdd", format))
>
>
>  DateTimeFormatInfo クラスの GetEraName メソッドを使用することで 4 から "平成" を
> 取得することができますので、一旦文字列を加工すればお望みの結果が得られると思います。
>
>
> # あぁ、とろとろ書いてたら先に返信が(汗)


深山さんありがとうございます。
GetEraNameでやってみました。ですねこれで実現できそうです。
ありがとうございました!!助かりました!
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板