0

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

我已经检查过了。

来自 NSString 的 NSDate

将 NSDate 转换为 Sql Server 日期时间格式

谢谢。

// 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];
}
4

2 回答 2

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);
于 2013-06-15T06:23:32.830 回答
1

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

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

该库同时支持dateFromString:stringFromDate:

于 2013-06-15T06:28:30.923 回答