24時間制を使用する場合、時間指定子は次のように大文字のHである必要があります。
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];
正しい指定子については、こちらを確認してください:http: //unicode.org/reports/tr35/tr35-6.html#Date_Format_Patterns
ただし、日付フォーマッタのロケールを設定する必要があります。
// Set the locale as needed in the formatter (this example uses Japanese)
[dateFormat setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"ja_JP"]];
完全に機能するコード:
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss zzz"];
[dateFormatter setLocale:[[NSLocale alloc] initWithLocaleIdentifier:@"ja_JP"]];
NSDate *capturedStartDate = [dateFormatter dateFromString: @"2012-09-16 23:59:59 JST"];
NSLog(@"Captured Date %@", [capturedStartDate description]);
出力(GMT):
Captured Date 2012-09-16 14:59:59 +0000