日本-日本語
日本HPホーム 製品 & サービス OpenVMS製品情報
≫  お問い合わせ


OpenVMS マニュアル


 

OpenVMS ドキュメント
ライブラリ

タイトル
目次
まえがき
リファレンス・セクション
   ≫ライブラリ関数一覧
索引
PDF
OpenVMS ホーム

HP OpenVMS
HP C ランタイム・ライブラリ・リファレンス・マニュアル (下巻)


目次 索引




tm構造体に格納されている日付および時刻情報を使用して,ワイド文字出力文字列を作成します。出力文字列の形式は書式文字列によって制御されます。

形式

#include <wchar.h>

size_t wcsftime (wchar_t *wcs, size_t maxsize, const char *format, const struct tm *timeptr); (XPG4)

size_t wcsftime (wchar_t *wcs, size_t maxsize, const wchar_t *format, const struct tm *timeptr); (ISO C)

関数バリアント _DECC_V4_SOURCE および _VMS_V6_SOURCE 機能テスト・マクロを定義してコンパイルすると, OpenVMS Version 7.0 より前の動作と等価な, wcsftime関数へのローカル時刻ベースのエントリ・ポイントが使用可能となります。

引数



wcs

結果として得られるワイド文字列へのポインタ。

maxsize

結果として得られる文字列に格納されるワイド文字の数の最大値。

format

出力文字列の形式を制御する文字列へのポインタ。 XPG4 インタフェースでは,この引数は定数文字列へのポインタです。 ISO C インターフェスでは,定数ワイド文字列へのポインタです。

timeptr

ローカル時刻構造体へのポインタ。 tm構造体は <time.h>ヘッダ・ファイルに定義されています。

説明

wcsftime関数は, timeptr がポイントする構造体の中のデータを使用して, wcs がポイントするワイド文字列を作成します。 wcs には最高で maxsize 個のワイド文字がコピーされます。

書式文字列はゼロ個以上の変換指定と通常の文字から構成されます。すべての通常の文字は (終端の null 文字を含めて) 変更なしに出力文字列にコピーされます。変換指定は, tm構造体の中のデータが出力文字列にどのようにフォーマットされるかを定義します。

変換指定はパーセント (%) 文字,1 つまたは複数のオプションの文字 ( 表 1-13 を参照),および変換指定子 ( 表 1-14 を参照) から構成されます。 表 1-13 に示しているオプション文字が変換指定に含まれる場合,それらの文字は表に示した順序で現れなくてはなりません。

表 1-13 wcsftime 変換指定のオプション要素
要素 意味
-- フィールド幅にオプションとして付け,そのフィールドが左揃えされ,スペースでパディングされることを示す。0 要素と同時に使用することはできない。
0 フィールド幅にオプションとして付け,そのフィールドが右揃えされ,ゼロでパディングされることを示す。 -- 要素と同時に使用することはできない。
フィールド幅 最大フィールド幅を指定する 10 進整数。
.精度 フィールド内のデータの精度を指定する 10 進整数。

d, H, I, j, m, M, o, S, U, w, W, y, および Y 変換指定子では,精度指定子は,フィールド内の桁数の最小値である。変換指定が精度によって指定された桁数よりも少ない場合には,先頭にゼロが追加される。

a, A, b, B, c, D, E, h, n, N, p, r, t, T, x, X, Z, および % 変換指定子では,精度指定子は,フィールド内のワイド文字数の最大値である。変換指定が精度によって指定された桁数よりも多く文字を含んでいる場合には,右側の文字が切り捨てられる。

d, H, I, m, M, o, S, U, w, W, y, および Y 変換指定子のデフォルトの精度は 2 である。 j 変換指定子のデフォルトの精度は 3 である。

表 1-13 の変換指定のオプション要素のリストは, XPG4 仕様の弊社による拡張であることに注意してください。

表 1-14 は変換指定子を示しています。 wcsftime関数は,プログラムの現在のロケールの LC_TIME カテゴリのフィールドから値を取得します。たとえば, %Bが指定されている場合,関数は LC_TIME の mon フィールドにアクセスして, tm構造体で指定された月の完全な名前を取得します。無効な変換指定子を使用したときの結果は未定義です。

表 1-14 wcsftime の変換指定子
指定子 置き換え
a ロケールの短縮された曜日名。
A ロケールの完全な曜日名。
b ロケールの短縮された月の名前。
B ロケールの完全な月の名前。
c ロケールの適切な日付および時刻表現。
C 10 進数 (00〜99) として表現される世紀 ( 年を 100 で割り,整数に切り捨て )。
d その月の 10 進数 (00〜31) として表現される日付。
D %m/%d/%y と同じ。
e 先頭がスペース文字でフィルされた 2 桁のフィールドに格納される,その月の 10 進数 (1〜31) として表現される日付。
Ec ロケールの代替日付および時刻表現。
EC ロケールの代替表現における基本年 (期間) の名前。
Ex ロケールの代替日付表現。
Ey ロケールの代替表現における基本年 ( %EC ) からのオフセット。
EY ロケールの完全な代替年表現。
h %b と同じ。
H 10 進数 (00〜23) としての時刻 (24 時間制)。
I 10 進数 (01〜12) としての時刻 (12 時間制)。
j 10 進数 (001〜366) としての,その年の中での日。
m 10 進数 (01〜12) としての月。
M 10 進数 (00〜59) としての分。
n 改行文字。
Od ロケールの代替数値シンボルを使用した,その月の中での日。
Oe ロケールの代替数値シンボルを使用した,その月の中での日付。
OH ロケールの代替数値シンボルを使用した時刻 (24 時間制)。
OI ロケールの代替数値シンボルを使用した時刻 (12 時間制)。
Om ロケールの代替数値シンボルを使用した月。
OM ロケールの代替数値シンボルを使用した分。
OS ロケールの代替数値シンボルを使用した秒。
Ou ロケールの代替表現での曜日を数値で表したもの ( 月曜日 =1)。
OU ロケールの代替数値シンボルを使用した,その年の中での週 (週は日曜日から始まる)。
OV ロケールの代替数値シンボルを使用した,10 進数 (01〜53) としての,その年の中での週 (週は月曜日から始まる)。1 月 1 日を含んでいる週が,新年に 4 日以上ある場合には,その週が 1 番目の週と見なされる。そうでなければ,前年の 53 番目の週と見なされ,次の週が 1 番目の週となる。
Ow ロケールの代替数値シンボルを使用した,数値としての曜日 (日曜日 =0)。
OW ロケールの代替数値シンボルを使用した,その年の中での数値としての週 (週は月曜日から始まる)。
Oy ロケールの代替数値シンボルを使用した,世紀を除いた年。
p ロケールの 12 時間制における AM/PM 指定。
r AM/PM 表記での時刻。
R 24 時間表記での時刻 ( %H:%M )。
S 10 進数 (00〜61) としての秒。
t タブ文字。
T 時刻 ( %H:%M:%S )。
u 1〜7 の範囲の 10 進数としての曜日 (月曜日 =1)。
U 10 進数 (00〜53) としての,その年の中での週 (最初の日曜日が 1 番目の週の最初の日と見なされる)。
V 10 進数 (00〜53) としての,その年の中ので週 (週は月曜日から始まる)。1 月 1 日を含んでいる週が,新年に 4 日以上ある場合には,その週が 1 番目の週と見なされる。そうでなければ,前年の 53 番目の週と見なされ,次の週が 1 番目の週となる。
w 10 進数 (0 [日曜日]〜6) としての曜日。
W 10 進数 (00〜53) としての,その年の中での週 (最初の月曜日が 1 番目の週の最初の日と見なされる)。
x ロケールの適切な日付表現。
X ロケールの適切な時刻表現。
y 10 進数 (00〜99) としての,世紀を除いた年。
Y 10 進数としての,世紀を含んだ年。
Z タイム・ゾーン名またはその短縮形。タイム・ゾーン情報がない場合には,文字は出力されない。
% リテラルの % 文字。


戻り値

x wcs がポイントする配列に格納されたワイド文字数。終端の null 文字は含まれません。
0 エラーが発生したことを示します。配列の内容は不定です。


/* Exercise the wcsftime formatting routine.             */ 
/* NOTE: the format string is an "L" (or wide character) */ 
/*       string indicating that this call is NOT in      */ 
/*       the XPG4 format, but rather in ISO C format.    */ 
 
#include <stdlib.h> 
#include <stdio.h> 
#include <time.h> 
#include <wchar.h> 
#include <locale.h> 
#include <errno.h> 
 
#define NUM_OF_DATES  7 
#define BUF_SIZE 256 
 
/* This program formats a number of different dates, once using the    */ 
/* C locale and then using the fr_FR.ISO8859-1 locale.  Date and time  */ 
/* formatting is done using wcsftime().                                */ 
 
main() 
 
{ 
    int count, 
        i; 
    wchar_t buffer[BUF_SIZE]; 
    struct tm *tm_ptr; 
    time_t time_list[NUM_OF_DATES] = 
    {500, 68200000, 694223999, 
     694224000, 704900000, 705000000, 
     705900000}; 
 
    /* Display dates using the C locale */ 
    printf("\nUsing the C locale:\n\n"); 
 
    setlocale(LC_ALL, "C"); 
 
    for (i = 0; i < NUM_OF_DATES; i++) { 
        /* Convert to a tm structure */ 
        tm_ptr = localtime(&time_list[i]); 
 
        /* Format the date and time */ 
        count = wcsftime(buffer, BUF_SIZE, L"Date: %A %d %B %Y%nTime: %T%n%n", 
                        tm_ptr); 
        if (count == 0) { 
            perror("wcsftime"); 
            exit(EXIT_FAILURE); 
        } 
 
        /* Print the result */ 
        printf("%S", buffer); 
    } 
 
    /* Display dates using the fr_FR.ISO8859-1 locale */ 
    printf("\nUsing the fr_FR.ISO8859-1 locale:\n\n"); 
 
    setlocale(LC_ALL, "fr_FR.ISO8859-1"); 
 
    for (i = 0; i < NUM_OF_DATES; i++) { 
        /* Convert to a tm structure */ 
        tm_ptr = localtime(&time_list[i]); 
 
        /* Format the date and time */ 
        count = wcsftime(buffer, BUF_SIZE, L"Date: %A %d %B %Y%nTime: %T%n%n", 
                         tm_ptr); 
        if (count == 0) { 
            perror("wcsftime"); 
            exit(EXIT_FAILURE); 
        } 
 
        /* Print the result */ 
        printf("%S", buffer); 
    } 
} 

この例のプログラムを実行すると,次の結果が生成されます。

Using the C locale: 
 
Date: Thursday 01 January 1970 
Time: 00:08:20 
 
Date: Tuesday 29 February 1972 
Time: 08:26:40 
 
Date: Tuesday 31 December 1991 
Time: 23:59:59 
 
Date: Wednesday 01 January 1992 
Time: 00:00:00 
 
Date: Sunday 03 May 1992 
Time: 13:33:20 
 
Date: Monday 04 May 1992 
Time: 17:20:00 
 
Date: Friday 15 May 1992 
Time: 03:20:00 
 
 
Using the fr_FR.ISO8859-1 locale: 
 
Date: jeudi 01 janvier 1970 
Time: 00:08:20 
 
Date: mardi 29 f□rier 1972 
Time: 08:26:40 
 
Date: mardi 31 d□embre 1991 
Time: 23:59:59 
 
Date: mercredi 01 janvier 1992 
Time: 00:00:00 
 
Date: dimanche 03 mai 1992 
Time: 13:33:20 
 
Date: lundi 04 mai 1992 
Time: 17:20:00 
 
Date: vendredi 15 mai 1992 
Time: 03:20:00 


目次 索引

© 2012 Hewlett-Packard Development Company, L.P.