Linux上のCで簡単なWebサーバーを作成しています。
クライアント(ブラウザ)に転送されるファイルの最終変更時刻を追加する必要があります。
いくつかのWebサイトを分析したところ、すべてのWebサイトが時刻を形式で表示していることがわかりました。
Fri, 12 Nov 2010 16:02:54 GMT
、
私の質問は、time_t値を前の形式の文字列に単純に転送できますか?これを行う機能はありますか?それとも、フォーマットはまったく重要ではありませんか?
strftime()は必要な関数です。
time_tに関するウィキペディアの記事は良い例を示しています http://en.wikipedia.org/wiki/Time_t
これはRFC822で定義されている形式のように見えます。をに変換し、次time_t
のようなstrftime文字列struct tm
を使用して形式を設定できます。
struct tm time_tm;
char http_time[64];
time_t t = time(NULL);
gmtime_r(&t,&time_tm);
strftime(http_time,sizeof http_time,"%a, %d %b %Y %H:%M:%S +0000",&time_tm);
ノート; strftimeは現在のロケールを使用して名前を変換します。英語の名前を取得するには、現在のロケールを変更する必要がある場合があります。
HTTP仕様では、 asctime()で指定された形式も許可されています。