3

次のようなNSStringをフォーマットしようとしています。

@ "2012-07-19T02:58:33Z"

次の形式でNSDateに変換します。

@ "MMMM dd、yyyy HH:mm a"

NSDateFormatterは常にnilを返しますが、これは、現在の形式のNSStringを目的の形式に変換できないためだと思います。これが私のコードです:

 NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
        [formatter setDateFormat:@"MMMM dd, yyyy HH:mm a"];
        NSLocale *enUSLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
        [formatter setLocale:enUSLocale];
        NSDate *date = [formatter dateFromString:dateString];

日付を別の形式で保存する必要がありますか?現在のNSStringでこの変換を可能にできますか?

ありがとう!

4

3 に答える 3

1

あなたのdateFormatterはあなたのdateStringと一致しません...これを試してください

NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
NSLocale *enUSLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[formatter setLocale:enUSLocale];
NSDate *date = [formatter dateFromString:dateString];

[formatter setDateFormat:@"MMMM dd, yyyy HH:mm a"];
dateString=[formatter stringFromDate:date];

現在、dateString には「2012 年 7 月 19 日 02:58 AM」が含まれています。

お役に立てれば

于 2012-08-21T04:20:23.823 に答える
1

それを試してみてください。

NSString *myDateString=@"2012-07-19T02:58:33Z";//@"2009-07-06T17:42:12";
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];

[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];
 NSDate *myDate = [[NSDate alloc] init];
 myDate = [dateFormatter dateFromString:myDateString];
 NSLog(@"MyDate is: %@", myDate);
于 2012-08-21T04:20:56.267 に答える
0

あなたの問題はすでに解決されています

元の文字列の形式で文字列を NSDate に保存します。

NSString *originalDateString = @"2012-07-19T02:58:33Z";
NSDateFormatter *originalFormatter = [[NSDateFormatter alloc]init];
 [formatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss'Z'"];

NSLocale *enUSLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[formatter setLocale:enUSLocale];
NSDate *originalDate = [formatter dateFromString:originalDateString];

NSDateFormatter *newFormatter = [formatter setDateFormat:@"MMMM dd, yyyy HH:mm a"];
NSString *newDateString = [formatter stringFromDate:originalDate];
于 2012-08-21T04:21:48.090 に答える