プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になっております。
C言語で以下のような処理を実現したいと思っているのですが
可能でしょうか。

「20091020」のような8桁の日付が文字列として格納されている
変数に対して、システム日付からどれくらい差があるか。

【例】
(1)システム日付が2009/10/19
(2)チェックしたい8桁の文字列="20091025"
(3)上記(1)、(2)を利用して、差が10~20の間の場合はNG!

といったことを実現したいです。

A 回答 (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);

}
    • good
    • 2
この回答へのお礼

hiro_knigh 様

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

お礼日時:2009/10/19 15:38

システムの日付が取得できる環境であれば可能でしょう。


具体的に知りたい場合はOSやコンパイラの補足が必要です。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています