OSXでRFC2822をフォーマットする
HTTPの日付文字列はあまり使われていないRFC2822になっている。探すとNSDateFormatterを使ったコードがけっこう出てくるけどこのクラスはちゃんと設定されているロケールに応じた日付文字列を返すのでシステムが日本語に設定してあると曜日が日本語で出力されてRFC2822にならない。書いた方が早い。
NSString* rfc2822StringFromDate(const NSDate* date) {
time_t t;
struct tm tm;
time_t epoch = (time_t)[[NSDate date] timeIntervalSince1970];
time(&epoch);
gmtime_r(&epoch, &tm);
static const char* month_names[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
static const char* day_names[] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };
return [NSString stringWithFormat:@"%s, %02d %s %4d %02d:%02d:%02d GMT",
day_names[tm.tm_wday],
tm.tm_mday,
month_names[tm.tm_mon],
tm.tm_year + 1900,
tm.tm_hour,
tm.tm_min,
tm.tm_sec
];
}
About this entry
You’re currently reading “OSXでRFC2822をフォーマットする,” an entry on ku
- Published:
- 2009.11.20 / 2am
- Category:
- C/C++, OSX, objectiveC

No comments
Jump to comment form | comments rss [?]