喫茶XRAYトップページ
[
スレッド全体
]
[11362]
新しい年号の前に・・・
返信
削除
2017/9/13 (水) 15:58:45
おかぽん
こんにちは。
今日、あるお客様より、元号の変更への対応について質問されました。
そんなこんなで、以下のページを参考資料として、集めたわけです。
元号が改正された場合の西暦と和暦の相互変換について [JAPAN]
https://
communit
y.
embarcad
ero.
com/
blogs/
entry/
year-
convert-
between-
gregoria
n-
and-
japanese
-
new-
era
Era Handling for the Japanese Calendar
https://
msdn.
microsof
t.
com/
en-
us/
library/
windows/
desktop/
ee923790
.
aspx
日本マイクロソフトの新元号 (和暦) 対応に関するサポート情報のブログです
https://
blogs.
technet.
microsof
t.
com/
jperablo
g/
ここから本題。
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://
communit
y.
embarcad
ero.
com/
blogs/
entry/
year-
convert-
between-
gregoria
n-
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/
plDateEd
it/
B_UseMet
hod.
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.
embarcad
ero.
com/
Librarie
s/
Berlin/
ja/
System.
SysUtils
.
TFormatS
ettings.
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