我遇到时区问题,
所以问题是这样的:
我的日期是GMT
2013-10-18 00:00:00 +0000
我将其转换为GMT-10
[formatter setDateFormat:@"dd/MM/yyyy hh:mm a"];
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT-10"]];
NSString *minusTenGMT = [formatter stringFromDate:date];
2013年10月17日02:00下午
它给了我一个字符串:17/10/2013 02:00 PM
所以基本上 minusTenGMT 是一个带有字符串日期的字符串
如果我想获取minusTenGMT的GMT值。我应该扭转这个过程
[formatter setDateFormat:@"dd/MM/yyyy hh:mm a"];
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:@"GMT"]];
NSDate *origDate = [formatter dateFromString:minusTenGMT];
但问题是,结果是
2013-10-18 08:00:00 +0000 与原始日期比较:2013-10-18 00:00:00 +0000
,根据我搜索到的内容,该字符串的时区将返回到 GMT?怎么了?。
但是如果我不使用 GMT 缩写并且使用本地时区
[formatter setDateFormat:@"dd/MM/yyyy hh:mm a"];
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:[[NSTimeZone localTimeZone] abbreviation]]];
NSDate *origDate = [formatter dateFromString:minusTenGMT];
结果是 2013-10-18 00:00:00 +0000 与原始完全相同。
我的本地是GMT-10,我什至尝试通过ios模拟器和系统更改我的位置。当使用本地时它们都会回到原来的状态(这是正确的)。但如果 GMT,它们会给出不同的输出。
谁能告诉我发生了什么事吗?我想知道为什么如果我使用自己的时区而不是日期的原始时区,它会起作用。
提前致谢:D。
编辑:修正了拼写错误。
困扰我的是为什么我在将其转换回 GMT 时要使用 GMT-10?
还是我太笨了,听不懂? 我使用 GMT-10 格式来获取 GMT-10。
所以要从 GMT-10 获取 GMT,我应该使用 GMT 格式,但它不起作用,我需要使用 GMT-10 格式来获取 GMT。
最佳答案
我同意 rmaddy 请尝试在下面包含这一行:--
formatter setDateFormat:@"dd/MM/yyyy hh:mm a"];
[formatter setTimeZone:[NSTimeZone timeZoneWithAbbreviation:[[NSTimeZone localTimeZone] abbreviation]]];
NSString *minusTenGMT = [formatter stringFromDate:date];// this line you need to include for converting
NSDate *origDate = [formatter dateFromString:minusTenGMT];
关于ios - 带有日期字符串的 NSString 的时区是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19418643/