Ios NSString到NSDate的格式对话问题

Ios NSString到NSDate的格式对话问题,ios,objective-c,datetime,nsdate,nsdateformatter,Ios,Objective C,Datetime,Nsdate,Nsdateformatter,我已经在StackOverflow.com上搜索了这个问题的答案,但仍然没有找到任何答案。已经在这里看过了: 这些都不管用 所以我有一个NSString日期格式:2014-05-07T10:28:52.000Z试图将其转换为NSDate,这就是我使用的: + (NSDate*)stringToDate:(NSString*)string format:(NSString*)format { NSDateFormatter *dateFormatter = [[NSDateFor

我已经在StackOverflow.com上搜索了这个问题的答案,但仍然没有找到任何答案。已经在这里看过了:

这些都不管用


所以我有一个NSString日期格式:
2014-05-07T10:28:52.000Z
试图将其转换为NSDate,这就是我使用的:

+ (NSDate*)stringToDate:(NSString*)string format:(NSString*)format
{
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:format];
    return [dateFormatter dateFromString:string];
}
我就是这样使用它的:

NSDate *date = [AppUtils stringToDate:youtube.postDate format:@"yyyy-MM-dd'T'HH:mm:ssZZZ"];
我也尝试过这些格式:

yyyy-MM-dd'T'HH:mm:ss.ZZZ
yyyy-MM-dd'T'HH:mm.ss.ZZZ
yyyy-MM-dd'T'HH:mm.ssZZZ
如何将其成功转换为NSDate


提前谢谢

如果日期格式是固定的,我所做的如下

Replace T by space
Replace Z by blank 
然后做格式化

NSString *dateReceivedInString = @"2014-05-07T10:28:52.000Z";
dateReceivedInString = [dateReceivedInString stringByReplacingOccurrencesOfString:@"T" withString:@" "];
dateReceivedInString = [dateReceivedInString stringByReplacingOccurrencesOfString:@"Z" withString:@""];
现在使用

yyyy-MM-dd HH:mm:ss
编辑1 如果您想处理您的案例,请使用下面的

yyyy-MM-dd'T'HH:mm:ss.SSSZ
编辑2 我试过这个,它是有效的

NSString *dateReceivedInString = @"2014-05-07T10:28:52.000Z";
dateReceivedInString = [dateReceivedInString stringByReplacingOccurrencesOfString:@"T" withString:@" "];
dateReceivedInString = [dateReceivedInString stringByReplacingOccurrencesOfString:@"Z" withString:@""];

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss.SSS"];
NSLog(@"ddddd====%@", [dateFormatter dateFromString:dateReceivedInString]);
编辑3 使用下面的方法来处理您的案例

NSString *dateReceivedInString = @"2014-05-07T10:28:52.000Z";
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZ"];
NSLog(@"ddddd====%@", [dateFormatter dateFromString:dateReceivedInString]);

下面是我用来将
rfc339日期字符串
转换为
NSDate

以及将
NSDate
转换为
RFC3339日期字符串的方法

将RFC3339日期字符串转换为NSDate的方法

+ (NSDate *)dateForRFC3339DateTimeString:(NSString *)rfc3339DateTimeString { NSDateFormatter *rfc3339DateFormatter = [[NSDateFormatter alloc] init]; [rfc3339DateFormatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'SSS'Z'"]; [rfc3339DateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; // Convert the RFC 3339 date time string to an NSDate. return [rfc3339DateFormatter dateFromString:rfc3339DateTimeString];} +(NSDate*)用于rfc3339DateTimeString的日期:(NSString*)rfc3339DateTimeString { NSDateFormatter*rfc3339DateFormatter=[[NSDateFormatter alloc]init]; [rfc3339DateFormatter setDateFormat:@“yyyy'-'MM'-'dd'T'HH':'MM':'ss.'SSS'Z'”; [rfc3339DateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]; //将RFC 3339日期时间字符串转换为NSDate。 返回[rfc3339DateFormatter dateFromString:rfc3339DateTimeString];} 将NSDate转换为RFC3339日期字符串的方法

+ (NSString *)RFC3339DateTimeFromDate:(NSDate *)aDate { NSDateFormatter *rfc3339DateFormatter = [[NSDateFormatter alloc] init]; [rfc3339DateFormatter setDateFormat:@"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'SSS'Z'"]; [rfc3339DateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]]; return [rfc3339DateFormatter stringFromDate:aDate]; } +(NSString*)RFC3339DateTimeFromDate:(NSDate*)日期 { NSDateFormatter*rfc3339DateFormatter=[[NSDateFormatter alloc]init]; [rfc3339DateFormatter setDateFormat:@“yyyy'-'MM'-'dd'T'HH':'MM':'ss.'SSS'Z'”; [rfc3339DateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]; 返回[rfc3339DateFormatter stringFromDate:aDate]; }
目前的结果是什么?你有一个youtube.postDate的例子吗?你忘了告诉我们发生了什么。您还引用了其他stackoverflow问题,并提到它们没有帮助,但您的代码甚至没有设置时区,因此我认为您实际上没有阅读/理解这些其他问题。这不应该是
ss.ZZZ
?我阅读并尝试了其他选项,但没有一个对我有效。此外,这不是我第一次使用NSDateFormatter,我仍然不知道为什么它不起作用。@YossiTsafar:看我的答案是否起作用了。。编辑3与你的情况。。。用我的案例编辑2…添加空格和留白有什么不同?谢谢,但我是这样做的:
yyyy-MM-dd'HH:MM.ss Z
并且像这样:
yyyy-MM-dd''HH:MM.ss
仍然不起作用。
2014-05-0710:28:52
更好或者
2014-05-07 10:28:52
读出来了???@YossiTsafar:不,我不是在表达中的意思。。我的意思是在你收到的日期字符串中…@YossiTsafar:欢迎。。。为了避免这种痛苦,我选择了编辑2,它总是对我有用。。。