2016-08-29 90 views
0

我在谷歌搜索如何在Objective-C得到格林尼治標準時間,我得到這個:的iOS 9:添加GMT時間價值

+ (NSString *)GetGMTTime{ 
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
dateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm"; 

NSTimeZone *gmt = [NSTimeZone timeZoneWithAbbreviation:@"GMT"]; 
[dateFormatter setTimeZone:gmt]; 

return [dateFormatter stringFromDate:[NSDate date]];} 

有什麼辦法來添加或設置格林尼治標準時間? (GMT + 5)

+0

你需要GMT + 5:30或GMT +5 –

回答

2

最靈活的方法是使用timeZoneForSecondsFromGMT。這是比使用GMT + X這樣的字串更加錯別字

這裏是一個fuly工作示例:

+ (NSString *)GetGMTTime{ 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    dateFormatter.dateFormat = @"yyyy-MM-dd'T'HH:mm"; 

    NSTimeZone *gmt = [NSTimeZone timeZoneForSecondsFromGMT:(60*60*5)]; 
    [dateFormatter setTimeZone:gmt]; 

    return [dateFormatter stringFromDate:[NSDate date]]; 

} 

它返回2016-08-29T12:13(當GMT時間2016-08-29T7:13

注意: 60*60*5表示5 hours X 60 minutes X 60 seconds

1

可以這樣試試。

NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@"GMT+5:30"]; 
+0

它的工作原理,謝謝.... – victorz

0

如果您創建了NSDate實例,那麼它將默認返回UTC or GMT格式的日期。

現在,當您將此日期轉換爲任何日期格式程序的字符串時,則返回的字符串(日期)將位於本地時區(即設備的時區)。

您可以使用它的名稱創建自定義時區以獲取該時區中的日期。

NSDate *date = [NSDate date]; //give current date in UTC or GMT 
NSLog(@"current date in gmt : %@",date); 

NSDateFormatter *df = [[NSDateFormatter alloc]init]; 
[df setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 

NSString *dateInStrFormat = [df stringFromDate:date]; // this date(string format) will be in current timezone that was set in your device and 

NSLog(@"current date in local or device's default timezone : %@",dateInStrFormat); 

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

NSLog(@"timezone : %@",timeZone); 

[df setTimeZone:timeZone]; 

NSString *dateInCustomTimeZone = [df stringFromDate:date]; // this will return date in Asia/Kolkata's timezone 

NSLog(@"date in custom timezone : %@",dateInCustomTimeZone); 

NSLog(@"timezone : %@",timeZone);將打印類似,Asia/Kolkata (IST) offset 1980019800偏移,如果你有3600把它,那麼你將獲得與gmt(+/- 5.30 etc)

Link for different timezone names

或者你能搞到像時區差異,

NSTimeZone *timezone1 = [NSTimeZone timeZoneWithName:@"GMT+5:30"]; 
NSLog(@"timezone : %@",timezone1); 

NSTimeZone *timeAone2 = [NSTimeZone timeZoneForSecondsFromGMT:60*60*5.5]; 
NSLog(@"timezone : %@",timeAone2);