0

我在时区方面遇到问题,

所以这里是问题:

我有一个格林威治标准时间的日期

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。

4

1 回答 1

1

我同意 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];
于 2013-10-17T05:45:59.777 回答