Delphi Tips 
-----------------------------

0296  D1   D2   D3   D4   D5   D6   D7   3.1   95   98    作成: 2000/01/02 osamu rev 1.3
   B1   B3   B4   B5   B6   B7   NT3   NT4   2K   XP  更新: 2000/01/02 osamu 編集
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)は誤っていますので、ご注意ください。
参照: [Delphi-ML:37908] [Delphi-ML:43093] <データベース> <コンポーネント > <DataControls>

[新規作成] [最新の情報に更新]

How To
Lounge
KeyWords


Tips
Delphi
Home
Osamu Takeuchi osamu@big.or.jp