• ベストアンサー

C言語でシステム日付との差を求める

いつもお世話になっております。 C言語で以下のような処理を実現したいと思っているのですが 可能でしょうか。 「20091020」のような8桁の日付が文字列として格納されている 変数に対して、システム日付からどれくらい差があるか。 【例】 (1)システム日付が2009/10/19 (2)チェックしたい8桁の文字列="20091025" (3)上記(1)、(2)を利用して、差が10~20の間の場合はNG! といったことを実現したいです。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

お疲れ様です。 C言語で標準で規定されている関数のみで作成すると以下の通りになると思います。 (2038年問題等がありますが。。。) #include<stdio.h> #include<time.h> int main() { time_t now,dat; char *timedat = "20091030"; struct tm ts = {0}; double diff,nissuu; /* 現在時刻の取得 */ now = time(NULL); /* 日付をtime_tに変換 */ sscanf(timedat ,"%4d%2d%2d",&(ts.tm_year),&(ts.tm_mon),&(ts.tm_mday)); ts.tm_year -= 1900; ts.tm_mon -= 1; dat = mktime(&ts); /* 差分算出 */ diff = difftime(dat, now); nissuu = diff / (60*60*24); }

TEVEZ
質問者

お礼

hiro_knigh 様 ご返信ありがとうございます。 アドバイス頂いたやり方でトライしてみましたところできました!!

その他の回答 (1)

  • php504
  • ベストアンサー率42% (926/2160)
回答No.1

システムの日付が取得できる環境であれば可能でしょう。 具体的に知りたい場合はOSやコンパイラの補足が必要です。

関連するQ&A