Format関数で年を元号表示にしたい


魔界の椎名  2005-12-15 15:14:18  No: 93231

VBにおいてFormat関数を使用して年を元号表示にしようとしているのですが、これがうまくいきません。どううまくいかないかというと
Format(2005,"GGG")
とやった場合、"平成"が返ってきてほしいのですが、なぜか"明治"が帰ってきます。
なぜこういうことになるのかわかりません。
知っている人がいたら教えてください。
それとどうすれば正しい値を取得できるか教えてください。


regiko  2005-12-15 15:33:19  No: 93232

どうもです。

2005が数値で認識されているからでは?

Format$(CDate("2005/01/01"),"ggg")
ってやれば平成が出ますよ。


魔界の椎名  2005-12-15 15:48:26  No: 93233

確かにいきました。ありがとうございます。
これはやはり、月と日も含めた値でなければだめなんですかね?


魔界の仮面弁士  2005-12-15 16:05:56  No: 93234

単に 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日
のように、特定の日付を境に切り替わっていますので、西暦情報だけだと、
どちらの元号にすべきかを特定できない可能性がある事に注意してください。


regiko  2005-12-15 16:08:37  No: 93235

どうもです。

>これはやはり、月と日も含めた値でなければだめなんですかね?

年だけでは無理だとおもいますよ。

Format$(DateSerial(2005,1,1),"GGG")

こうゆうのも出来ました。


Dental  2005-12-15 16:17:19  No: 93236

> 西暦情報だけだと、どちらの元号にすべきかを特定できない
月や日まであったとしても、特定できるとは限りません。

昭和改元の詔書によって、大正15年12月25日 と 昭和元年12月25日 は、共に存在する事に
なっているので。明治45年7月30日と、大正元年7月30日も然り。

>  1989年01月07日  →  昭和64年1月7日
>  1989年01月08日  →  平成元年1月8日
昭和と平成は重ならないので、問題なし。


※作成する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。







   このエントリーをはてなブックマークに追加