我有一个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
答案 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
您可以向苹果提交错误。