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



我已经在谷歌上搜索了很多关于这个问题,但没有找到正确的解决方案。所有结果都以日期和时间格式给出时区。

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

+5:30

作为时区。我怎样才能实现这一点?

我试过这个

 NSTimeZone* currentTimeZone = [NSTimeZone localTimeZone];

但它会在加尔卡塔/德里给出结果.我也尝试了其他答案,但没有找到解决方案。

我的建议是查看 Apple 文档以获取NSTimeZone

如果这样做,您就会意识到有一种方法-secondsFromGMT可以从格林威治时间返回秒数。
也许您还可以创建自己的日期格式化程序字符串-dateFormat作为NSDateFormatter的属性传递,并直接获取时区的字符串表示形式。类似的东西@"ZZZZZ".
单击此处了解有关如何正确编码日期格式的信息。

试试这个:

    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答案

-(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);
}

相关内容

  • 没有找到相关文章

最新更新