- ベストアンサー
C言語でシステム日付との差を求める
いつもお世話になっております。 C言語で以下のような処理を実現したいと思っているのですが 可能でしょうか。 「20091020」のような8桁の日付が文字列として格納されている 変数に対して、システム日付からどれくらい差があるか。 【例】 (1)システム日付が2009/10/19 (2)チェックしたい8桁の文字列="20091025" (3)上記(1)、(2)を利用して、差が10~20の間の場合はNG! といったことを実現したいです。
- みんなの回答 (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); }
その他の回答 (1)
- php504
- ベストアンサー率42% (926/2160)
システムの日付が取得できる環境であれば可能でしょう。 具体的に知りたい場合はOSやコンパイラの補足が必要です。
お礼
hiro_knigh 様 ご返信ありがとうございます。 アドバイス頂いたやり方でトライしてみましたところできました!!