14

「2012-09-1623:59:59JST」という文字列があります。この日付文字列をNSDateに変換したいと思います。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss Z"];
NSDate *capturedStartDate = [dateFormatter dateFromString: @"2012-09-16 23:59:59 JST"];
NSLog(@"%@", capturedStartDate);

しかし、それは機能していません。null値を与えます。助けてください..

4

3 に答える 3

37

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
于 2012-09-14T06:34:04.960 に答える
6
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss Z"];
NSDate *capturedStartDate = [dateFormatter dateFromString: @"2012-09-16 23:59:59 GMT-08:00"];
NSLog(@"%@", capturedStartDate);
于 2012-09-14T06:50:34.413 に答える
1
NSString *dateString = @"01-02-2010";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];

// this is imporant - we set our input date format to match our input string
// if format doesn't match you'll get nil from your string, so be careful

[dateFormatter setDateFormat:@"dd-MM-yyyy"];
NSDate *dateFromString = [[NSDate alloc] init];
 // end
dateFromString = [dateFormatter dateFromString:dateString];
[dateFormatter release];
于 2012-09-14T06:47:13.510 に答える