NSDateFormatter在iOS 5.1和iOS 6中的行为

其他人注意到iOS 5.1和iOS 6.0之间的一些区别? 在下面,datestring的格式在每个版本中都有不同的返回:NSDateFormatter

*dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; dateFormatter.dateFormat = @"MM/dd/yyyy HH:mm:ss (vvvvv)"; NSDate *lDate = [[NSDate alloc]init]; NSString *sDate = [dateFormatter stringFromDate:lDate]; 

在iOS 5.1中,sDate是“10/01/2012 16:43:09(GMT-05:00)”,但在iOS 6.0中,sDate是“2012年10月1日16:44:09

任何想法,为什么这将是?

replace@"MM/dd/yyyy HH:mm:ss (vvvvv)";@"MM/dd/yyyy HH:mm:ss ('GMT'Z)";

Z格式的string会输出你正在用vvvvv进行的vvvvv除了GMT前缀以外,还没有冒号。

如果需要冒号,可以添加这一行来将其添加到string中:

 sDate = [NSString stringWithFormat:@"%@:%@", [sDate substringToIndex:sDate.length-3], [sDate substringWithRange:NSMakeRange(sDate.length-3, 3)]]; 

我认为这解决了你的问题(只使用一个v):

 NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init]; dateFormatter.dateFormat = @"MM/dd/yyyy HH:mm:ss (V)"; NSDate *lDate = [[NSDate alloc]init]; NSString *sDate = [dateFormatter stringFromDate:lDate]; 

我有IST而不是GMT。 我使用V在IOS 5中工作正常,但在IOS 6不工作。