将nsstring转换为nsdate时出现问题,反之亦然

时间:2011-05-27 08:51:13

标签: objective-c xcode

我在从日期转换为字符串和字符串到日期时遇到问题。

代码是:

NSDate *date=[NSDate date];
NSDateFormatter *formatter=[[NSDateFormatter alloc] init];
[formatter setDateFormat:@"dd/MM/YYYY"];
NSString *dateString=[formatter stringFromDate:date];

NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"dd/MM/YYYY"];
NSDate *date2 = [dateFormat dateFromString:dateString];

打印时显示不同的日期。 请帮助我

1 个答案:

答案 0 :(得分:1)

NSDate始终以GMT格式返回。所以date2是对的。它在GMT。您可以将其视为27/05/2011 00:00:00 +0530 IST。这没有什么不妥。

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"dd/MM/YYYY"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneWithName:@"IST"]];
NSLog(@"%@", [dateFormat stringFromDate:date2]);

这样做应该在IST返回。

你也可以像这样获得date2

NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSInteger flag = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
NSDateComponents *dateComponents = [gregorian components:flag fromDate:[NSDate date]];
NSDate *date2 = [gregorian dateFromComponents:dateComponents];