如何将英国时间转换为墨西哥时区

时间:2015-02-16 10:56:41

标签: ios objective-c nsarray nsdate nstimezone

我在那个日期有一个阵列在英国时区。我想将英国时区转换为国家时间以下。我有两个单选按钮

Mexico (UTC-6)
India - IST (UTC+5.30)

当我点击Mexico (UTC-6)单选按钮时,我的数组日期将转换为墨西哥时区,当我点击India - IST (UTC+5.30)单选按钮时,我的数组日期将转换为印度时区。

我的数组[0]时区日期为2015-04-17 10:29:22 +0000这是在英国时区。 请帮我编码,这是我第一次做时区过程。

2 个答案:

答案 0 :(得分:2)

尝试这可能会有所帮助...在此您需要传递时区名称

 NSTimeZone* sourceTimeZone = [NSTimeZone timeZoneWithName:@"Europe/London"];
NSTimeZone* destinationTimeZone = [NSTimeZone timeZoneWithName:@"America/Mexico_City"];

NSDate *yourDate = [NSDate date]; // Please add here your date that you want change .
//calc time difference
NSInteger sourceGMTOffset = [sourceTimeZone secondsFromGMTForDate:yourDate];

NSInteger destinationGMTOffset = [destinationTimeZone secondsFromGMTForDate:yourDate];
NSTimeInterval interval = destinationGMTOffset - sourceGMTOffset;

//set current real date
NSDate* date = [[NSDate alloc] initWithTimeInterval:interval sinceDate:yourDate];

此处所有时区列表All iOS TimeZone 试试这个有用的......

答案 1 :(得分:0)

NSDate没有时区,因此您的NSDate不在英国时区。 NSDate是绝对时间参考。这意味着如果你打电话给[NSDate date]并且世界另一端的某个人在同一时间完成它,你们都会得到相同的结果。

时区仅在显示日期时存在,但它们不属于NSDate

如果您想在墨西哥的时区显示日期,您可以这样做:

NSDate *date = // your NSDate here

NSTimeZone *myZone = [NSTimeZone timeZoneWithName:@"America/Mexico_City"];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterLongStyle];
[dateFormatter setTimeStyle:NSDateFormatterLongStyle];
[dateFormatter setTimeZone:myZone];

NSString *dateString = [dateFormatter stringFromDate:date];

如果您想获取其他时区的日期,只需更改第一行即可使用其他区域。例如,在印度,您可以使用

NSTimeZone *myZone = [NSTimeZone timeZoneWithName:@"Asia/Kolkata"];