:: reverse dictionary ::
※ソースファイルについて
現在からn日後の日付を求めるには、mktime 関数を使います。
#include <stdlib.h> #include <time.h>
struct tm *date; time_t now, result; int year, month, day; /* 現在の日時を取得 */ time(&now); date = localtime(&now); /* 5日後の日付を求める */ date->tm_mday += 5; result = mktime(date); if (result == (time_t)-1) { printf("正しい値に直せませんでした。\n"); return EXIT_FAILURE; } year = date->tm_year + 1900; month = date->tm_mon + 1; day = date->tm_mday;
現在が「2005年4月1日」になっていた場合、year は 2005 、month は 4 、day は 6 になります。
time_t mktime(struct tm *ti)
時間情報 ti に設定されている各時間の値を正しい値に直します。
正しい値に直した場合は、その経過時間を返します。
正しい値に直せなかった場合は -1 を返します。
ti … 時間情報のポインタ
・正しい値に直した … 経過時間
・正しい値に直せなかった … -1
n日前の日付を求めることもできます。
struct tm *date; time_t now, result; int year, month, day; /* 現在の日時を取得 */ time(&now); date = localtime(&now); /* 10日前の日付を求める */ date->tm_mday -= 10; result = mktime(date); if (result == (time_t)-1) { printf("正しい値に直せませんでした。\n"); return EXIT_FAILURE; } year = date->tm_year + 1900; month = date->tm_mon + 1; day = date->tm_mday;
現在が「2005年4月1日」になっていた場合、year は 2005 、month は 3 、day は 22 になります。
tm 構造体に設定できる各時間の値は、次のとおりです。
(メンバ変数は、全て int 型)
| メンバ変数 | 内容 | 値 |
|---|---|---|
| tm_hour | 時 | 0 〜 23 |
| tm_isdst | 夏時間フラグ | 1以上:有効、0:無効、-1以下:不明 |
| tm_mday | 日 | 1 〜 31 |
| tm_min | 分 | 0 〜 59 |
| tm_mon | 月 | 0 〜 11(1月が 0) |
| tm_sec | 秒 | 0 〜 59 |
| tm_wday | 曜日 | 0 〜 6(日曜日が 0) |
| tm_yday | 経過日数 | 0 〜 365(1月1日が 0) |
| tm_year | 年 | 年 - 1900(2000年が 100) |
Copyright (C) 2005-2007 Noto Watabe. All rights reserved.
e-mail:wmh@always-pg.com