iOS:NSDateFormatter自动更改时区
我正在使用NSDateFormatter,它给了我奇怪的结果iOS:NSDateFormatter自动更改时区,ios,nsdate,nsdateformatter,Ios,Nsdate,Nsdateformatter,我正在使用NSDateFormatter,它给了我奇怪的结果 NSString *startDateStr = @"2014-05-17 11:00 AM"; NSString *endDateStr = @"2014-05-17 11:30 AM" NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter setDateFormat:@"yyyy-MM-dd HH:mm a"]; startDate = [f
NSString *startDateStr = @"2014-05-17 11:00 AM";
NSString *endDateStr = @"2014-05-17 11:30 AM"
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"yyyy-MM-dd HH:mm a"];
startDate = [formatter dateFromString:startDateStr];
endDate = [formatter dateFromString:endDateStr];
不管我是否使用
[formatter setTimeZone:[NSTimeZone localTimeZone]];
或者不。。它给了我一个结果
2014-05-16 21:00:00+0000
开始日期
及
2014-05-16 21:30:00+0000
截止日期
我不知道是什么问题 我想你住在澳大利亚附近吧 您需要了解NSDate的功能和显示。NSDate以格林尼治标准时间显示时间。因此,如果您将上午11点转换为本地时区,同时也是格林尼治标准时间的晚上9点(格林尼治标准时间是伦敦附近的格林尼治标准时间,当时他们没有夏令时),那么NSDate将显示晚上9点。你绝对有正确的日期和时间,你只需要习惯NSDate的显示方式 如果纽约有人运行了您的代码,他们会得到不同的结果,因为纽约的“当地时间上午11点”与您居住的“当地时间上午11点”的时间不同
设置[NSTimeZone localTimeZone]没有任何区别,因为这是日期格式化程序的默认设置 好的,我知道了。。但我该怎么做才能让它保持在我选择的时区中呢it@MohamedEmadHegab-你不能把它放在你的时区。稍后格式化NSDate对象以进行显示时,请使用希望用于转换的时区设置NSDateFormatter。NSDate本身仍然是GMT(顺便说一句,它本身没有定义格式)。