2012-05-07 63 views
1

我有日期(为NSString):NSDateFormatter格式格式的显示格式不正确

20120508T224500Z 

我试图用NSDateFormatter创建从字符串的NSDate

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyyMMddTHHmmssZ"]; 
NSDate *dateFromString = [[NSDate alloc] init]; 

但这会错误地解析/格式化NSDate。

我想获得的格式为:

4:45 PM 5/8/2012 

我如何使用日期格式yyyyMMddTHHmmssZ得到这个格式?

回答

4

您必须单引号的 'T' 和 'Z' 的字符串:20120508T224500Z

格式化信息,请参阅unicode date formatting

实施例:

NSString *dateString = @"20120508T224500Z"; 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyyMMdd'T'HHmmss'Z'"]; 
NSDate *dateFromString = [dateFormatter dateFromString:dateString]; 
NSLog(@"dateFromString: %@", dateFromString); 

[dateFormatter setDateFormat:@"h:m a M/d/yyyy"]; 
NSString *newDataString = [dateFormatter stringFromDate:dateFromString]; 
NSLog(@"newDataString: %@", newDataString); 

的NSLog输出:

dateFromString:2012-05-09 2时45分00秒0000
newDataString:下午10点45 2012年5月8日

请注意,NSLog使用NSDate描述方法并在本地时间显示日期/时间。
使用- (void)setTimeZone:(NSTimeZone *)tz在不同的时区创建字符串。

+0

完美答案! – Brett