VBにおいてFormat関数を使用して年を元号表示にしようとしているのですが、これがうまくいきません。どううまくいかないかというと
Format(2005,"GGG")
とやった場合、"平成"が返ってきてほしいのですが、なぜか"明治"が帰ってきます。
なぜこういうことになるのかわかりません。
知っている人がいたら教えてください。
それとどうすれば正しい値を取得できるか教えてください。
どうもです。
2005が数値で認識されているからでは?
Format$(CDate("2005/01/01"),"ggg")
ってやれば平成が出ますよ。
確かにいきました。ありがとうございます。
これはやはり、月と日も含めた値でなければだめなんですかね?
単に 2005 と書いた場合、それは 1905(明治32)年6月27日を意味します。
これは日付型が、1899年12月30日からの経過日数として
表現されているためです。
ちなみに各年号は、元旦を機に変化するわけではなく、
1926年12月24日 → 大正15年12月24日
1926年12月25日 → 昭和元年12月25日
1989年01月07日 → 昭和64年1月7日
1989年01月08日 → 平成元年1月8日
のように、特定の日付を境に切り替わっていますので、西暦情報だけだと、
どちらの元号にすべきかを特定できない可能性がある事に注意してください。
どうもです。
>これはやはり、月と日も含めた値でなければだめなんですかね?
年だけでは無理だとおもいますよ。
Format$(DateSerial(2005,1,1),"GGG")
こうゆうのも出来ました。
> 西暦情報だけだと、どちらの元号にすべきかを特定できない
月や日まであったとしても、特定できるとは限りません。
昭和改元の詔書によって、大正15年12月25日 と 昭和元年12月25日 は、共に存在する事に
なっているので。明治45年7月30日と、大正元年7月30日も然り。
> 1989年01月07日 → 昭和64年1月7日
> 1989年01月08日 → 平成元年1月8日
昭和と平成は重ならないので、問題なし。
| ツイート |
|