[Delphi]新元号・令和の影響
トップページへ
●SysUtils.FormatDateTime関数について
2019/5/11 追記
Windows Update後なら、異常になることはありませんでした。OSに依存しているからだと思われます。
●Delphi(楽天市場で探す ・ amazonで探す)のカレンダーコントロールについて
2019/5/10 追記
Windows 10 で、自動Windows Update 後には令和が表示されました。
2019/5/15 追記
Windows7 で、KB4499164 (マイクロソフト)をWindows Updateでインストールしたところ、Windows 7 上で令和の表記が可能となりました。
タップ(クリック)で拡大します。
その他の情報について
リンク先 → 日本の元号変更に関する Windows の更新プログラムについて
Delphiで作成したプログラム内のカレンダーコントロール
※ただし、コントロールパネルの「日付と時刻の設定」→「カレンダーの種類を『和暦』」にしている場合に限られます。
初期値の『西暦』の場合は「令和1年」ではなく「2019年」と表記されます。
※また、当方は新元号に対し、Delphiのアップデートはしていません
2019/4/17 追加
エンバカデロ・ニュースレターより、そのまま引用しました
タップ(クリック)で拡大します。
・要点
Delphi RTLによる和暦の使用:
TFormatSettingsとDateTimeToStringなどを使った和暦による表示、あるいはStrToDateなどによる和暦文字列の読み込み(変換)などは、OSの新元号対応によって、そのまま改元に対応しますので問題はありません。
独自の和暦対応:
一方、独自の和暦/西暦換算を行っている場合には、コードの修正が必要になります。
・ニュースレターからのリンク
以下は管理人調べで、実際の処理だけでなく書籍を参考にしたものなので、当方は一切責任を負いません。自己責任でお願いします。
また、当然ではありますが、元号つまり和暦の日付で入力・表示している箇所が影響を受けます。
■Delphi編
SysUtils.FormatDateTime関数
・対処法:なし
・対処できない理由:OSまたはDelphiのユニットに依存するため。OSまたはDelphiの修正プログラムを期待または自作の処理で対応
※「その関数の一般的な使用なら Windows Updateによって元号を正しく表示しているので、問題はない」と私は判断しています(個人の意見です)
影響を受ける FormatDateTime関数 の指定子
e :和暦の年を表示: ex. 5
ee :和暦の年を表示。1桁の場合ゼロが付加: ex. 05
g :元号を1文字で表示: 明、大、昭、平
gg :元号を表示: 明治、大正、昭和、平成
ggg :元号を表示: 明治、大正、昭和、平成
管理人が確実に影響を受けると認識した指定子
「gge」や「gg e」として使用し、ex.「昭和63」や「平成 31」と表記する処理。
各元号の開始日から終了日で判定している処理がある場合
当方はこの処理をしていないので、各元号の期間のみを提示します
明治:1868/1/25-1912/7/30
大正:1912/7/30-1926/12/25
昭和:1926/12/25-1989/1/7
平成:1989/1/7-2019/4/30