TField.EditMask の y2k 回避
|
> DBEditで日付入力させるのですが、関連付けているTTable側の
> 日付フィールドのTFieldのEditMaskプロパティで
>
> !99/99/00;1;_
>
> ・・とマスクをかけています。
> すると、西暦を下2桁で打つマスクが有効になるのですが
> 2000/05/05 の意で 00/05/05 とか打つと、期待した
> 2000/05/05にならずに、1900/05/05と表示されてしまいます。
OnCreate イベントハンドラ内で
TwoDigitYearCenturyWindow := 50;
ShortDateFormat := 'yyyy/mm/dd';
の設定を行うと,現在の年が1999年のとき,1999年の前後50年である
1949/1/1 から 2048/12/31 の100年を変換の対象として扱います.
ただし D4 からの機能のようです。
詳しくはヘルプか以下のサイトをご覧になられるとよいと思います.
http://www.inprise.com/devsupport/y2000/
【追記】
Delphi 5 になってから TwoDigitYearCenturyWindow グローバル変数の初期値が「0」から「50」に変更されました。UI 簡略化等で西暦2桁年を使っているような場合、TwoDigitYearCenturyWindow 変数を設定しないまま日付型に変換しているような処理では、処理結果がD4以前と変わる場合があります。
ヘルプの記述(初期値は0)は誤っていますので、ご注意ください。 |
|