NSString到NSDate转换问题
问题描述:
我有一个NSString对象,我正在NSDateFormatter的帮助下转换到NSDate。现在,代码在所有操作系统中都能正常工作,但它在客户端的add(USA区域)上创建了不同的输出。 这是我使用的代码。NSString到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哥斯瓦米
答
我注意到唯一的输出差异是时间不同。如果您没有明确设置格式化程序的timeZone
属性,它将使用系统的本地时区。如果您希望时间与您和您的客户完全一样:
[formate setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
这将确保输出总是GMT。
答
您需要手动设置的区域设置为NSDateFormatter
,让所有用户看到相同的格式化字符串。否则,格式化程序将使用为设备设置的任何区域设置。
答
实际上,它工作正常。这两个日期相当,只是一个在美国/山区时区,另一个在格林威治时区。 (5:30 pm + 7 hours = 12:30 am)
这里有什么问题?
答
在iOS2.x和3.x描述/ datefromstring函数返回: 2010-09-24 17时30分零零秒 - 0700
在IOS 4.x的它返回这个: 2010-09- 25 00:30:00 GMT
您可以提交一个bug给苹果。