日付や金額の表示形式は、国によって違っています。
日本では「年月日」が一般的ですが、欧米では「月日年」と年が最後にきますし、場合によっては「日月年」だったりします。
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.