NSDateFormatter格式显示不正确的格式

时间:2012-05-07 22:04:27

标签: iphone objective-c nsdate

我有格式的日期(NSString):

20120508T224500Z

我正在尝试使用NSDateFormatter从字符串中创建NSDate

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

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

我正在尝试获取格式:

4:45 PM 5/8/2012

如何使用日期格式化程序yyyyMMddTHHmmssZ来获取此格式?

1 个答案:

答案 0 :(得分: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 02:45:00 +0000
  newDataString:10/45 PM 5/8/2012

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