Delphi6で平成以降の和暦を扱う場合の処理


ティモテ  2014-06-23 20:23:41  No: 46408

環境:Delphi6 Enterprice Up2, Win7 64bit

現在FormatDateTime関数を利用して、引数のTDateTimeから和暦+年(例:平成26年)などを取得して利用しています。
これを平成の次の和暦がきた場合にも対応したく、方法としては以下の3つを考えました。
1.FormatDateTime関数で和暦呼び出しを全て西暦に変える。
2.FormatDateTime関数をコピーしてきて、平成以降の処理を追加する。
3.TDateTime型から和暦+年を判別する関数を自作する。

1.は西暦に変えた場合に修正する範囲がかなり多くなってしまうため除外
2.はFormatDateTime関数の中を見たのですが簡単に変更できそうにないので除外
上記理由から3.で行こうと考えているのですが、
この場合TDataTime型の値から判定して〜以降なら平成、かつ何年、のような処理をif分で書き、現在FormatDateTime関数で呼び出して取得している部分を自作関数を呼び出すようにすればよいだけ。という認識でよいでしょうか。

また他によい方法やこうした方がよい(今後のことを考えると無理にでも西暦に変えた方が良い?)等あればお願いします。


tor  2014-06-23 21:55:56  No: 46409

えーと、いざ年号が変わった時には、新年号に対応すべく世界中のソフトウェア開発者がこれまで作ったプログラムすべてを自力で直して配布し直すんだとお考えでしょうか……
そんな大変なことしなくても済むよう吸収してくれるのがライブラリですよね。

トのニトヤにしても自分で和暦の判定なんてしていなくて、ラヲサチミノの関数(ヌトニあたり)を呼び出しているだけだと思います。
これはシステムのロケール情報から年号の情報を取り出します。
いざその時がきたら、おそらくラヲサユでシステムが更新されて、何もしなくても勝手に新年号に対応するようになるのではないでしょうか。

何にしても、まだ具体的なことなど何もわからない先のことを今から気にしてあれこれ作り込んでも無駄に終わると思います。
その時まで作ったプログラムがメンテナンスされているか、ビルドできる環境が残っているかなんてことわかりませんし、
「次の次の年号になったらどうするの?」って問題は残りますし。
スススススススススススススススススススススススススススススススススススススススス
ニコ ティモテ
トコ イーアエッーカッイウィ月ゥ アウコーキコアキ シ  スュアセシ初心者セ シッニセシノヘヌ ス「コッッョョョッッアョ「 ス「ー「セ 書込者ノト:ロ 「「」、" ン

ヲサさん
年号等が変わった際はトのニトヤ関数が更新されてツからアップデートされるけど、トカは古いのでもう更新されないから自分で直さないといけないと思っていました。
ニトヤ関数ィに限らずこういう関数ゥはラが対応されれば大丈夫なんですね、ありがとうございました。
スススススススススススススススススススススススススススススススススススススススス
ニコ ティモテ
トコ イーアエッーカッイウィ月ゥ アカコアクコオー  書込者ノト:ロ 「「」、" ン
モコ 

解決チェックを忘れていました。
スススススススススススススススススススススススススススススススススススススススス
ニコ ティモテ
トコ イーアエッーカッイウィ月ゥ アカコアクコオー  書込者ノト:ロ 「「」、" ン
モコ 

解決チェックを忘れていました。
スススススススススススススススススススススススススススススススススススススススス
ニコ 通りすがり
トコ イーアエッーカッイウィ月ゥ イウコウイコアエ  書込者ノト:ロ ァ。。 ン

ヲサヲサいざその時がきたら、おそらくラヲサユでシステムが更新されて、何もしなくても勝手に新年号に対応するようになるのではないでしょうか。
その時点でサポートが終了していないものに限られると思いますよ。
たとえばそれが今年だったらクョアヲサユは大丈夫でもキは微妙、ヨは多分無理、リミとそれ以前なら絶望、というように。
それでよければマモ任せでマヒ、駄目なら自前で対応、と考える必要があるでしょう。
スススススススススススススススススススススススススススススススススススススススス
ニコ ティモテ
トコ イーアエッーカッイエィ火ゥ ーケコウキコアア シ  スュアセシ初心者セ シッニセシノヘヌ ス「コッッョョョッッアョ「 ス「ー「セ 書込者ノト:ロ 「「」、" ン

ヲサ通りすがりさん
延長サポート期間であってもメインストリームサポートが終わっていればその辺りの更新ィ今回でいうところの新しい和暦の追加ゥはされないということでしょうか?
確かキのメインストリームサポートがイーアオ年ア月アウ日だったと思うのですが、それだと意外と近いですね…

例えば今新しい年号に変わってラクにアップデートが入った場合、
ラクでニトヤ関数を利用したソフトで和暦を取得した場合ァ新年号元年ァと取得できるが、
ラリミで同様のを起動するとァ平成イカ年ァと取得してしまう
という認識であっているでしょうか?
スススススススススススススススススススススススススススススススススススススススス
ニコ 通りすがり
トコ イーアエッーカッイエィ火ゥ アーコウアコイオ  書込者ノト:ロ 」。・。。  ン

正直どのバージョンまで更新がなされるのかはヘモさんの胸先三寸ですので、確定的なことは誰もいえません。反発が大きくて後付けでパッチ、何てこともありえます。
日本国内での影響は極めて大きいですからね。
ただこれに関してはレジストリエントリヲサネヒナル゜フマテチプヘチテネノホナワモルモヤナヘワテテモワテワホワテワハワナヲサだけの話なので、自分でどうにかすることもできなくはなさそうです…。

ヲサヲサ例えば今新しい年号に変わってラクにアップデートが入った場合、
ヲサヲサィ以下略ゥ
そうなりますィ「新元号ア年「ですけどゥ。
スススススススススススススススススススススススススススススススススススススススス
ニコ ティモテ
トコ イーアエッーカッイエィ火ゥ アアコーアコーエ シ  スュアセシ初心者セ シッニセシノヘヌ ス「コッッョョョッッアョ「 ス「ー「セ 書込者ノト:ロ 「「」、" ン

ヲサ通りすがりさん
なるほど、ありがとうございます。
年号はレジストリのそこを読み取っていたのですね、勉強になりました。


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

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






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