IOS - 以GMT格式获取设备的当前时区

时间:2016-01-20 13:33:30

标签: ios objective-c timezone gmt

我已经搜索了很多关于Google的这个问题但是找不到正确的解决方案。所有结果以日期和时间格式提供时区。

我想知道如何以GMT格式获取设备的时区。 就像,我只想要这个

  

5:30

作为TimeZone。我怎么能做到这一点?

我试过这个

 NSTimeZone* currentTimeZone = [NSTimeZone localTimeZone];

但它会在kolkatta / Delhi中给出结果。 我也尝试了其他答案,但没有找到解决方案。

3 个答案:

答案 0 :(得分:1)

我的建议是查看Apple文档NSTimeZone

如果你这样做,你就会意识到有一个方法-secondsFromGMT从格林威治时间返回秒数。
也许你也可以创建自己的date formatter字符串作为-dateFormat的{​​{1}}属性传递,并直接获得时区的字符串表示。类似NSDateFormatter的东西 点击here获取有关如何正确编码日期格式的信息。

答案 1 :(得分:1)

试试这个:

    NSDate *myDate = [NSDate date];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateStyle:NSDateFormatterLongStyle];
    [dateFormatter setTimeStyle:NSDateFormatterLongStyle];
    [dateFormatter setDateFormat:@"ZZZ"];

     NSTimeZone *timeZone = [NSTimeZone timeZoneWithName: @"Asia/Kolkata"];
    [dateFormatter setTimeZone:timeZone];

    NSString *dateString = [dateFormatter stringFromDate: myDate];
    NSLog(@"%@", dateString);

<强>输出:

0530

有关更多信息,请阅读@Andrea答案

答案 2 :(得分:0)

-(void)getCurrentTimeZoneMins
{
    NSTimeZone* destinationTimeZone = [NSTimeZone systemTimeZone];
    float timeZoneOffset = [destinationTimeZone secondsFromGMTForDate:[NSDate date]] / 60;;
    NSLog(@"%f mins",timeZoneOffset);
}

-(void)printTimeZone
{
    NSDateFormatter *localTimeZoneFormatter = [NSDateFormatter new];
    localTimeZoneFormatter.timeZone = [NSTimeZone localTimeZone];
    localTimeZoneFormatter.dateFormat = @"Z";
    NSString *localTimeZoneOffset = [localTimeZoneFormatter stringFromDate:[NSDate date]];
    NSLog(@"%@",localTimeZoneOffset);
}