喫茶XRAYトップページ

[スレッド全体
]

[11362] 新しい年号の前に・・・返信 削除
2017/9/13 (水) 15:58:45 おかぽん
こんにちは。

今日、あるお客様より、元号の変更への対応について質問されました。

そんなこんなで、以下のページを参考資料として、集めたわけです。

元号が改正された場合の西暦と和暦の相互変換について [JAPAN]
https://community.embarcadero.com/blogs/entry/year-convert-between-gregorian-and-japanese-new-era

Era Handling for the Japanese Calendar
https://msdn.microsoft.com/en-us/library/windows/desktop/ee923790.aspx

日本マイクロソフトの新元号 (和暦) 対応に関するサポート情報のブログです
https://blogs.technet.microsoft.com/jperablog/

ここから本題。

Windows 7 以降は、レジストリに元号の情報を持つようになっています。
例)"1989 01 08"="平成_平_Heisei_H"

SysUtils.pas の EraNames[x] には、 '平成', '昭和'...が入ってきますし、
レジストリに新しい元号のエントリを追加すると、その元号も取得できるのですが、
この文字列の中の "_"で区切られた、2つ目、3つ目、4つ目を取得するAPIとか
ご存知ありませんか?

4つ目の英字で表現された先頭 1 文字を取得できれば、あとはいらないんですけど。

システムの都合により、自前で日付の文字列処理している部分があるため、
プログラムの定数値で処理している部分をOSから取得した値で処理できるように
しておくと、困らないな〜と思ったわけです。

ついでに、SysUtils.pas の EraYearOffsetsも、西暦年しかとれないので、年月も
とる方法がないのか調査中。

英語が読めなくて(翻訳すると余計ややこしい)探しきれない・・・私を許して下さい

[11363] Re:新しい年号の前に・・・返信 削除
2017/9/13 (水) 18:57:49 Mr.XRAY
▼ おかぽんさん

> 元号が改正された場合の西暦と和暦の相互変換について [JAPAN]
> https://community.embarcadero.com/blogs/entry/year-convert-between-gregorian-and-japanese-new-era
>

おおっ,サンクスです.
後で参考リンクに追加させていただきます.

>4つ目の英字で表現された先頭 1 文字を取得できれば、あとはいらないんですけど。

日本語のロケールだと EraNames には日本湖の元号名が格納されるんでしたよね ?
う〜ん.
となるとレジストリからの直接の読み込みのかな.


[11364] Re2:新しい年号の前に・・・返信 削除
2017/9/13 (水) 19:09:08 おかぽん
▼ Mr.XRAYさん
> となるとレジストリからの直接の読み込みのかな.
ですよね〜

ちなみに、日付の形式文字列の"g"は、日本語表記の先頭一文字ですが、
EraNamesに入っている先頭文字を返しているだけです(Turbo Delphi まで確認)。
少なくともAPIを使って何かしているのではなさそうなので、APIで解決できる線は
望み薄かな〜と。



[11365] 備忘録返信 削除
2017/9/14 (木) 15:33:47 おかぽん
> Delphi XE5でグローバル変数「MaxEraCount」「EraNames」「EraYearOffsets」が
> 廃止されました。

下記リンク 2) より

1) 元号が変わった場合
http://mrxray.on.coocan.jp/Delphi/plDateEdit/B_UseMethod.htm#06

2) Delphi XE5対応元号選択式日付時刻入力コンポーネントTplDateEdit
http://www.gesource.jp/weblog/?p=6202

3) Delphi XE5で和暦の元号を取得するには
http://www.gesource.jp/weblog/?p=6130

4) Delphi XE5で和暦の始まりの年を取得するには
http://www.gesource.jp/weblog/?p=6131

5) System.SysUtils.TFormatSettings.TEraInfo
http://docwiki.embarcadero.com/Libraries/Berlin/ja/System.SysUtils.TFormatSettings.TEraInfo

6) 日付の年号を略称で表示するには?[C#、VB]
http://www.atmarkit.co.jp/ait/articles/1506/10/news022.html


・Delphi のバージョンが上がっても、MTSH は取れそうにないけど、年月までは確認できそう。
・.NETでも、無理らしい。
 A〜Zの英字で、年月が取得できるか取得したりして、対応表を作るとか?

[11366] Re:備忘録返信 削除
2017/9/14 (木) 15:47:03 Mr.XRAY
▼ おかぽんさん

備忘録と書いてあるので (^^
これ,Delphi Forum の方に転載してもいいですか ?
元号変更が現実になっているので.
おそらくその時になると多くの方が知りたくなると思うので,

と,ここまで書いて思ったのですか,
もう少し後,来年ぐらいの方がいいかな... う〜ん.
ちょっと考えてみます.


[11367] Re2:備忘録返信 削除
2017/9/15 (金) 08:19:32 おかぽん
▼ Mr.XRAYさん
> これ,Delphi Forum の方に転載してもいいですか ?
どうぞどうぞ。

引き続き情報収集して、ここにつなげていきます。

[11375] Delphi2の実装返信 削除
2017/9/18 (月) 20:23:14 おかぽん
リソースで以下の文字列を保持していたので、形式文字列 "g" で、アルファベットの
一文字を返すことができたようです。

 "M,明,明治,1868,1,1"
 "T,大,大正,1912,7,30"
 "S,昭,昭和,1926,12,25"
 "H,平,平成,1989,1,8"


[11376] Re:Delphi2の実装返信 削除
2017/9/19 (火) 08:44:41 Mr.XRAY
▼ おかぽんさん
> リソースで以下の文字列を保持していたので、形式文字列 "g" で、アルファベットの
> 一文字を返すことができたようです。
>
>  "M,明,明治,1868,1,1"
>  "T,大,大正,1912,7,30"
>  "S,昭,昭和,1926,12,25"
>  "H,平,平成,1989,1,8"


なるほど...
Delphi 2 ....


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82