Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS:NSDateFormatter自动更改时区_Ios_Nsdate_Nsdateformatter - Fatal编程技术网

iOS: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

我正在使用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 = [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(顺便说一句,它本身没有定义格式)。