我在时区方面遇到问题,
所以这里是问题:
我有一个格林威治标准时间的日期
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年 17 月 10 日下午02:00
它给了我一个字符串:17/10/2013 02:00 PM
所以基本上减TenGMT是一个带有字符串日期的字符串
如果我想得到 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 缩写并且我使用我的本地时区
[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 Simulator 和系统更改我的位置。当使用本地时,它们都会回到原始状态(这是正确的)。但如果 GMT 他们给出不同的输出。
谁能告诉我发生了什么?我想知道如果我使用自己的时区而不是日期的原始时区,它为什么会起作用。
先谢谢了。
编辑:修正了错字。
困扰我的是为什么在将其转换回 GMT 时要使用 GMT-10?
还是我太愚蠢了,无法理解?我使用 GMT-10 格式来获取 GMT-10。
所以要从 GMT-10 获取 GMT,我应该使用 GMT 格式,但它不起作用,我需要使用 GMT-10 格式来获取 GMT。