Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
西暦から和暦へ
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=25960#CommentId69520
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
魔界の仮面弁士
 (社会人)
投稿日時
2015/11/24 19:46:43
アルファベット一文字を取得するためのスマートな方法は用意されていません。
"昭和" や "昭" なら得られるのですけれどね。
Parse はできるのに Format は出来ない謎仕様。
(案1) Reflection を用いて、非公開メンバー「AbbreviatedEnglishEraNames」に
アクセスして取り出す。
(案2) 自前で変換表を用意する。
(案3) Windows 7 以降限定で、レジストリの
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Calendars\Japanese
にある、西暦/和暦の元号対応を参照する。
(案4) VarFormat API (VBA の Format 関数) で、書式 "GEE\/MM\/DD" を指定する。
自分の場合は、「DateTime → 和暦String への変換」、
および「和暦String → DateTime の解析変換」のために
自作ライブラリを作って対処しています。上記で言うと 案2 ですね。
(.NET のクラスだけでなく、データベースのストアド関数でも同種の物を用意)
> Console.WriteLine(Date.Now.ToString("ggyy年MM月dd日", cultureInfo))
ちなみに、案3 のレジストリに
"2045 01 23" = "元号_元_Gengo_G"
と登録しておくと、
Dim dt As Date = #11/22/2067#
Console.WriteLine(dt.ToString("g.y.M.d", cultureInfo))
というコードによって、
.NET 4 以降の場合 … 「元号.23.11.22」
.NET 4 未満の場合 … 「平成.79.11.22」
が得られます。
元号って、突き詰めると結構ややこしいんですよね…。
昭和→平成は良いのですが、昭和以前が何とも。
http://hanatyan.sakura.ne.jp/logbbs1/wforum.cgi?mode=allread&no=8698&page=0
【日付を遡って改元された時期がある】
「1868年1月25日~1868年10月23日」は、
「慶応4年1月1日~慶應4年9月8日」であると同時に
「明治元年1月1日~明治元年9月8日」でもある。
【明治時代に、旧暦から新暦の移行が行われた】
新暦「明治6年1月1日(1873年1月1日)」の『前日』は、旧暦「明治5年12月2日」(1872年12月31日)
【同じ日に複数の元号が割り当てられている】
「大正15年12月25日」と『同日』=「昭和元年12月25日」
「明治45年7月30日」と『同日』=「大正元年7月30日」