0

プロキシ サーバーにキャッシュを実装しています。私は Expires: フィールドをリクエストのレスポンスから保存しています。次回同じリクエストが来たら、Expires の時間を現在の時間と比較します。今、私はここで立ち往生しています。有効期限の形式を秒に変換して差を取るにはどうすればよいですか? 時差を取得する他の方法はありますか?

有効期限の形式は次のとおりです。 Sat, 10 Nov 2012 07:05:26 GMT

2 つの時間があるとします。2 つの時間を比較するにはどうすればよいですか?GMT?

4

2 に答える 2

1

これが実際の例です:

#include <stdio.h>
#include <time.h>

int main(int argc, char **argv) {
    struct tm t;
    time_t seconds;
    const char *expire = "Sat, 10 Nov 2012 07:05:25 GMT";
    strptime(expire, "%a, %d %B %Y %H:%M:%S", &t);
    seconds = mktime(&t);
    printf("%lu\n", seconds);
}

strptime() はタイムゾーンを無視するため (少なくとも Linux では)、時間は GMT 時間でなければならないことに注意してください。また、ロケールを、入力時間に使用したのと同じロケールに設定する必要がある場合もあります。

于 2012-10-11T07:41:48.340 に答える
0

実装にそれがある場合は、strptime関数を使用してその文字列を に変換しstruct tm、次にそれmktimeを に変換time_t簡単に比較できます。

于 2012-10-11T07:17:38.400 に答える