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 回答