需要将NSString转换为Nsdate

时间:2013-06-15 06:14:52

标签: ios nsdate nsdateformatter

我需要将“2013-05-05T00:00:00Z”此字符串转换为NSDate,然后再将NSDate转换为Nsstring。我尝试过不同格式的风格,但没有取得任何成功。

我已经查过了。

NSDate from NSString

Convert NSDate to Sql Server Datetime format

感谢。

// for getting string for Advance search  

-(NSDate*) doGetDateFromStringGSearch :(NSString*) dateStr 
{

NSDateFormatter * outputFormatter4 = [[[NSDateFormatter alloc ] init ] autorelease ];

NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"];
[outputFormatter4 setLocale:locale];

//[outputFormatter4 setDateFormat: @"yyyy-MM-dd'T'HH:mm:ss:SSS"];
//[outputFormatter4 setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss.SSSZZZ"];
 [ outputFormatter4 setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss:Z" ];
 //[ outputFormatter4 setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss':00Z'" ];

NSString * inputString2 = dateStr;
NSDate * inputRecivedToDate = [outputFormatter4 dateFromString:inputString2 ];
NSLog(@"doGetDateFromString  %@", inputRecivedToDate);

return [[inputRecivedToDate retain] autorelease];
}

2 个答案:

答案 0 :(得分:3)

将格式化程序字符串更改为:

[outputFormatter4 setDateFormat:@"yyyy-MM-dd'T'hh:mm:ss'Z'"];

完整代码:

NSDateFormatter *dateFormatter=[NSDateFormatter new];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"UTC"]];
[dateFormatter setDateFormat:@"yyyy-MM-dd'T'hh:mm:ss'Z'"];
NSDate *date=[dateFormatter dateFromString:@"2013-05-05T00:00:00Z"];

NSLog(@"%@",date);

答案 1 :(得分:1)

我多年来一直使用带有@"yyyy-MM-dd'T'HH:mm:ssZZZZ"格式的NSDateFormatter,但发现只有少数,但只有少数(可能不到1%)的设备没有成功,并且返回nil。

作为一个后备,我一直在使用这个库:https://github.com/keithpitt/ISO8601DateFormatter现在我没有看到解析ISO8601日期格式的任何问题。

该库同时支持dateFromString:stringFromDate: