日付や金額の表示形式は、国によって違っています。
日本では「年月日」が一般的ですが、欧米では「月日年」と年が最後にきますし、場合によっては「日月年」だったりします。
Palmマシンは環境設定で日付などの書式を設定できるので、アプリが日付を表示するときは、設定された書式に合わせて表示します。
まず、環境設定の設定値を取得する処理ですが、PrefGetPreference関数(Palm OS 2.0以降)により行います。
次に日付のデータを書式に合った文字列に変換しますが、
Palm OSにはDateToAscii関数とDateTemplateToAscii関数の2つの関数が用意されています。
DateToAscii関数は、環境設定から取得した値を直接指定して、日付を書式に合わせて変換します。
UInt16 years; UInt8 months; UInt8 days; DateFormatType dateFormat; Char buff[dateStringLength]; years = 2004; /* 年 */ months = 11; /* 月 */ days = 23; /* 日 */ dateFormat = PrefGetPreference(prefDateFormat); /* 日付書式取得 */ /* 日付を指定の書式で文字列に変換 */ DateToAscii(months, days, years, dateFormat, buff); |
DateTemplateToAscii関数は、Palm OS 3.5以降で使用可能で、任意の書式を指定して日付を文字列に変換します。
書式を自由に指定できるので、環境設定に無い書式にする事ができますが、
環境設定の書式設定に合わせる為には、
設定値に合わせて書式を作成する処理が必要になります。
書式設定に合わせて、年を4桁表示にする関数は以下のようになります。
Boolean DateToLongAscii( UInt16 years, /* I:年 */ UInt8 months, /* I:月 */ UInt8 days, /* I:日 */ CharPtr pBuff, /* O:変換結果文字列 */ Int16 buffSize) /* I:バッファサイズ */ { Boolean ret = true; DateFormatType dateFormat; dateFormat = PrefGetPreference(prefDateFormat); /* 日付書式取得 */ switch (dateFormat) { case dfYMDWithSlashes: /* 04/11/23 */ DateTemplateToAscii("^4r/^3r/^0r", months, days, years, pBuff, buffSize); break; case dfYMDWithDots: /* 04.11.23 */ DateTemplateToAscii("^4r.^3r.^0r", months, days, years, pBuff, buffSize); break; case dfYMDWithDashes: /* 04-11-23 */ DateTemplateToAscii("^4r-^3r-^0r", months, days, years, pBuff, buffSize); break; case dfMDYWithSlashes: /* 11/23/04 */ DateTemplateToAscii("^3r/^0r/^4r", months, days, years, pBuff, buffSize); break; case dfDMYWithSlashes: /* 23/11/04 */ DateTemplateToAscii("^0r/^3r/^4r", months, days, years, pBuff, buffSize); break; case dfDMYWithDots: /* 23.11.04 */ DateTemplateToAscii("^0r.^3r.^4r", months, days, years, pBuff, buffSize); break; case dfDMYWithDashes: /* 23-11-04 */ DateTemplateToAscii("^0r-^3r-^4r", months, days, years, pBuff, buffSize); break; case dfMDYWithDashes: /* 11-23-04 (Palm OS 4.0以降) */ DateTemplateToAscii("^3r-^0r-^4r", months, days, years, pBuff, buffSize); break; default: ret = false; break; } return ret; } |
実行サンプル画面
'04/11/23 新規作成
Copyright (c) 2004 kasa0 All rights reserved.