NSString到NSDate的转换问题

时间:2010-09-17 19:28:41

标签: iphone nsdate

我有一个NSString对象,我在NSDateFormatter的帮助下转换为NSDate。现在代码在这里适用于所有操作系统,但它在客户端的添加(美国区域)创建不同的输出。 这是我正在使用的代码。

NSDateFormatter *formate = [[[NSDateFormatter alloc] init] autorelease];
[formate setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *strConcat = @"2010-09-24 17:30:00";
NSDate *date = [formate dateFromString:strConcat];
NSLog(@"Output :%@",date);

我的结束------- 2010-09-24 17:30:00 - 0700 客户端输出---- 2010-09-25 00:30:00 GMT 任何人都可以建议问题出在哪里?

由于 Pratik Goswami

4 个答案:

答案 0 :(得分:4)

我注意到的唯一输出差异是时间不同。如果未明确设置格式化程序的timeZone属性,则将使用系统的本地时区。如果您希望时间与您和您的客户完全相同:

[formate setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];

这样可确保输出始终为GMT。

答案 1 :(得分:0)

您需要手动设置NSDateFormatter的区域设置,以便所有用户都能看到相同的格式化字符串。否则,格式化程序将使用为设备设置的任何区域设置。

答案 2 :(得分:0)

实际上,它运作正常。这两个日期相当,只是一个在美国/山区时区,另一个在格林威治时区。 (下午5:30 + 7小时= 12:30)

这里有什么问题?

答案 3 :(得分:0)

在iOS2.x和3.x中,description / datefromstring函数返回: 2010-09-24 17:30:00 - 0700

iOS 4.x中的

返回: 2010-09-25 00:30:00 GMT

您可以向苹果提交错误。