データの対応期間:
OEM に依存します。
日付の処理
Windows CE では、日付が圧縮されて OAL (HAL) に保存されます。OAL は OEM (Original Equipment Manufacturer) によって設計されます。通常、OEM は日付データを 100 年単位 (1950 ~ 2050 など) で指定します。Windows CE は、常に 4 桁の西暦で日付を取得したり返します。ただし、ハードウェアと直接通信する OAL で使用される日付データは除きます。Windows CE のすべての外部インターフェイスには、4 桁の西暦が使用されます。
下 2 桁の西暦の処理
Windows CE の変換ロジックは、OLE と同じです。OLE では、次の規則に基づき、2 桁の西暦が 4 桁の西暦に変換されます。
2 桁 4 桁
28 2028
29 2029
30 1930
31 1931
OLE では、プログラム的に 4 桁の西暦が使用されます。この変換が行われるのは、2 桁の文字列で表された西暦がアプリケーションに渡され、OLE でそれを変換する必要がある場合だけです。オペレーティング システム自体は、この変換の影響を受けません。
日付に関する注意事項
Windows CE は、OEM と OEM 実時間クロックの API のインプリメントに依存します。OEM では、2000 年以降も正しく日付が処理されるように、正しい情報をその OAL/ハードウェアに提供する必要があります。
ガイドラインと推奨事項
OEM で GetSystemTime と SetSystemTime を呼び出し、システム クロックが正しいことを確認します。これらの API は、OEM 実時間クロックを呼び出します。このクロックをテストし、2000 年問題に対応しているかどうか確認します。このテストでは、いろいろな日付を設定し、その結果を調べてみます。
小さな問題
1) 日付の西暦部分に指定できるのは、下 2 桁または 4 桁 (たとえば、98 または 1998) のいずれかです。この情報は、GetLocaleInfo を使用して LOCALE_ICENTURY が要求されたときに返されます。この処理の結果は、次の規則に基づいています。
- デフォルト値がオーバーライドされていない場合、戻り値がそのロケールのデフォルト値になります。LOCAL_ICENTURY によって返された値は、デフォルトの短い形式の日付 (LOCALE_SSHORTDATE) に基づいています。日付の形式が "yy" の場合、下 2 桁で西暦が指定されます。日付の形式が "yyyy" の場合、4 桁で西暦が指定されます。
- SetLocaleInfo が LOCALE_ICENTURY と共に使用されている場合、現在のデフォルトの形式が下 2 桁から 4 桁、または 4 桁から下 2 桁に変更 (オーバーライド) されます。
次の場合、下 2 桁の西暦に対する LOCAL_ICENTURY の値は、現在の西暦を表すように更新されません。
- コントロール パネルの [地域] を使用して、デフォルトである下 2 桁の形式を 4 桁に変更したり、4 桁を下 2 桁に変更した場合
- SetLocaleInfo (LOCALE_SSHORTDATE) を使用してデフォルトである下 2 桁の形式を 4 桁に変更したり、4 桁を下 2 桁に変更した場合
このどちらの場合も、LOCALE_ICENTURY に返される値は、日付の形式が変更される前と同じです。そのため、アプリケーションで短い形式の日付を取得し、西暦部分の "y" の数をカウントします。