C言語の標準関数を目的別に調べることができる辞典

ホーム > C 標準関数逆引き辞典 > 日付・時刻 > 現在からn日後の日付を求める

C 標準関数逆引き辞典

:: reverse dictionary ::

日付・時刻

※ソースファイルについて


現在からn日後の日付を求める

現在から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日」になっていた場合、year2005month4day6 になります。

▼ 関数

time_t mktime(struct tm *ti)

時間情報 ti に設定されている各時間の値を正しい値に直します。

正しい値に直した場合は、その経過時間を返します。
正しい値に直せなかった場合は -1 を返します。

●引数

ti … 時間情報のポインタ

●戻り値

・正しい値に直した … 経過時間
・正しい値に直せなかった … -1

●補足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日」になっていた場合、year2005month3day22 になります。

●補足2

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)

注目キーワード ベスト5

  1. セキュリティ
  2. ホスティング
  3. レンタルサーバ
  4. ファイル復旧
  5. ハードディスク修復

日付・時刻 - date & time -


ホーム > C 標準関数逆引き辞典 > 日付・時刻 > 現在からn日後の日付を求める

Copyright (C) 2005-2007 Noto Watabe. All rights reserved.
e-mail:wmh@always-pg.com