CookieのexpiresをNSDateFormatterで解析する
サーバから貰ったセッションは、
NSURLConnectionを使っていれば、基本的にCookieヘッダを勝手につけてくれるので、
細かいハンドリングをする必要はありませんが、
自動ログインを実装する場合などで、有効期限を知りたくなる時があります。
有効期限は、Set-Cookieヘッダのexpiresパラメタに指定されますが、
この形式が割と特殊で、NSDateFormatterを使ってパースしようとすると、
どうやってフォーマット文字列を組めばいいのか悩んでしまうと思います。
ということで、NSDateFormatterを使ってパースするサンプルを書いておきます。
NSString* sampleExpires = @"Tue, 1-Jan-2013 12:24:34 GMT";
NSDateFormatter* formatter = [ [NSDateFormatter alloc] init];
formatter.locale = [ [ [NSLocale alloc] initWithLocaleIdentifier:@"en-US"] autorelease];
formatter.dateFormat = @"EEE, dd'-'MMM'-'yyyy HH':'mm':'ss Z";
NSDate* expireDate = [formatter dateFromString sampleExpires];
[formatter release];
expireDateが、sampleExpiresを解析したNSDateオブジェクトです。
ポイントは主に2つ。
取得したexpireDateから、timeIntervalFromNowなどであんなことやこんなことをすれば良いと思います。