日付の処理
Windows CE オペレーティング システム
Windows CE for the Handheld PC では、日付が圧縮されて OAL (HAL) に保存されます。OAL は OEM (Original Equipment Manufacturer) によって設計されます。そのため、日付の対応期間は OEM で決定され、ハードウェア固有になります。通常、OEM は日付データを 100 年単位 (1950 ~ 2049 など) で指定します。これは実時間クロックが対象であり、Windows CE アプリケーションの日付には影響しません。Windows CE for the Handheld PC は、4 桁の西暦で日付を取得したり返します。ただし、ハードウェアと直接通信する OAL で使用される日付データは除きます。オペレーティング システムの外部インターフェイスでは、4 桁の西暦が使用されます。
* Windows CE のそのほかの情報に関しては、製品ガイドの "Windows CE 2.0" を参照してください。
Pocket Excel
- 保存: 日付の対応期間は、1900 年 1 月 1 日から 2078 年 12 月 31 日までです。
- 日付エントリの解析
: "M/D/YY" という形式で日付が入力された場合、YY が 30 より少ないときは 20XX、30 以上のときは 19XX と解釈されます。
- 計算時の文字列の日付の解析
: 数式が引数として文字列の日付を取る場合、その文字列の日付は前述の日付エントリの解析と同じ規則で解釈されます。つまり、Excel 95 のワークシートを Windows CE Services 2.x を使用するデバイス用に変換すると、Excel 95 では 1925 を返す =YEAR("1/1/25") などの数式が、そのデバイス上の Pocket Excel では 2025 を返すようになります。この問題は、"1/1/25" が下 2 桁の西暦を使用した文字列の場合にだけ起こります。
Pocket Word
- 保存: 現在問題は報告されていません。Pocket Word の日付に使用される日付と時刻の値は、ただのテキスト文字列として保存されます。
Pocket PowerPoint
- 保存: 現在問題は報告されていません。Pocket PowerPoint の日付に使用される日付と時刻の値は、ただのテキスト文字列として保存されます。
受信トレイ
- 保存: 日付は、内部的には Win32 FILETIME 構造体として保存されます。現在の日付と時刻には、システム クロックが使用されます。
- 形式
: 西暦は、コントロール パネルの [地域] で指定された形式に従って、下 2 桁または 4 桁で表示されます。日付の入力フィールドでは、入力された日付が [地域] で指定された形式に従っているかどうか解析され、従っている場合はその日付を受け付けます。
- 日付の表示
: リスト ビュー (listview) と読み取りビュー (readview) には日付が表示されますが、送信ビュー (sendview) には表示されません。
- SMTP/POP3 トランスポート
: POP3 トランスポート層では、受信メッセージの下 2 桁と 4 桁の西暦を Win32 FILETIME 構造体に変換します。
- TNEF 解析
: Schedule + の受信メッセージの日付を読み取ります。プロパティ形式の日付は、Win32 FILETIME 形式でバイナリ ファイル内に保存されます。この日付は、メッセージの本文から抽出されます。
Pocket Internet Explorer
- 保存: 日付は、内部的には Win32 FILETIME 構造体として保存されます。Pocket Internet Explorer が外部から日付を受け取るのは、cookie、 FTP リスト、および認証情報を使用した場合です。79 より小さい西暦の下 2 桁は 20XX として解釈され、80 以上は 19XX として解釈されます。
下 2 桁の西暦の処理
Windows CE オペレーティング システム
- Windows CE の変換ロジックは、OLE と同じです。OLE では、次の規則に基づき、2 桁の西暦が 4 桁の西暦に変換されます。
2 桁 4 桁
00-29 20xx
30-99 19xx
* Windows CE のそのほかの情報に関しては、製品ガイドの "Windows CE 2.0" を参照してください。
* OLE DB のそのほかの情報に関しては、製品ガイドの "OLE" を参照してください。
日付に関する注意事項
Windows CE
- Windows CE は、OEM と OEM の実時間クロックの API のインプリメントに依存します。OEM では、2000 年以降も正しく日付が処理されるように、正しい情報をその OAL/ハードウェアに提供する必要があります。
- コントロール パネルの [地域] タブに表示される次のロケールには、4 桁の西暦は使用できません。バスク語、カタロニア語、オランダ語 (ベルギー)、オランダ語 (標準)、英語 (オーストラリア)、英語 (カナダ)、英語 (カリブ)、英語 (アイルランド)、英語 (ニュージーランド)、英語 (南アフリカ)、英語 (U.K.)、フランス語 (ベルギー)、フランス語 (カナダ)、ドイツ語 (リヒテンシュタイン)、ドイツ語 (スイス)、イタリア語 (スイス)、スペイン語 (メキシコ)、スペイン語 (現代)、スペイン語 (トラディショナル)
カレンダー ビュー、タスク、受信トレイ、シェル ブラウザなどでは、これらのロケールに対して 4 桁の西暦を使用できません。
* Windows CE のそのほか情報に関しては、製品ガイドの "Windows CE 2.0" を参照してください。
Pocket Excel
- コントロール パネルの [地域] で、システムの YY (下 2 桁の西暦) という形式が YYYY (4 桁の西暦) という形式に変更されても、Pocket Excel ではデフォルトの日付の表示は YYYY という形式には変更されません。4 桁で西暦を表示するには、ユーザーが Pocket Excel の日付の形式を変更する必要があります。ただし、内部的には、日付は YYYY という形式で保存されています。
- 「Jan 00」と入力すると、日付はテキスト文字列として認識され、2000 年の 1 月 1 日と解釈されます。
- テキスト文字列で "Dec 98" などの形式を使用すると、2001 年 12 月 1 日に日付が機能しなくなります。98 は日にちとしては大きすぎるので、Pocket Excel では西暦だと解釈されます。それに対し、"Dec 01" は、現在の年の 12 月 1 日と解釈されます。Excel では有効な日付が入力されたことを前提としており、西暦または日にちのいずれかとしてその日付を解釈します。
- このように、テキストでの日付の解釈はあいまいであり、エラーを起こす原因となります。そのため、可能な場合は、すべて数字で日付を指定し、テキストの日付を使用する場合は注意してください。
- DATE() 関数は数値パラメータを受け取るので、下 2 桁の西暦は使用できません。この関数は、1900 より小さい数字を 1900 からのオフセットとして計算します。そのため、=DATE(15,1,1) などの数式を入力すると、2015 年ではなく、1915 年の 1 月 1 日が日付として出力されてしまいます。数値パラメータを大きくすると、20xx 年の日付を取得できます。
- Pocket Excel のセルに保存される日付の値は、クリップボードにはすべて数字から構成される日付としてコピーされます。つまり、2/29/2000 は、Pocket Excel から Pocket Word に 36585 として切り取られ、貼り付けられます。
受信トレイ
- POP3 プロトコルでは、下 2 桁と 4 桁の両方の西暦を使用できます。ただし、POP3 トランスポート層が下 2 桁の西暦を受け取った場合は、上 2 桁が現在の年代として解釈されます。つまり、2/1/99 という日付でメッセージが送られ、現在の年が 2001 年の場合、そのメッセージは 2/1/2099 のものとして解釈されます。
カレンダー
- 印刷日付の対応期間は、2037 年 12 月 31 日から 2038 年 4 月 29 日までです。ただし、2038 年 3 月 1 日に印刷できなくなります。
- カレンダーのアラームは、2000 年 1 月 1 日も含め、どの日でも午前 0 時 0 分 0 秒に動作しません。