2013-05-16 61 views
0

我有一個ipad應用程序,它在y軸上繪製時間圖。現在我的問題是,用戶可以在世界的任何地方訪問同一張圖。但是,圖表上的時間應該調整,以便它對應於用戶的當前時區。所以圖表上的時間應該補償時區之間的時間差異。任何人都可以告訴我如何從當前設備獲取時區,並計算偏移時間,如果我傳遞圖形發送設備的時區。計算對應於不同時區的日期和時間

這是我的日期格式化功能。我打算通過時區以及日期。

+(NSDate *)DateUKFormatFromString:(NSString *)date 
{ 
    NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init] ; 
    NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_GB"]; 
    [dateFormatter setLocale:locale]; 
    [dateFormatter setDateFormat:@"dd/MM/yyyy HH:mm:ss"]; 
    NSDate* returnDate = [dateFormatter dateFromString:date];  
    return returnDate; 
} 

在此先感謝。

回答

3

有一個dateFormatter實例方法setTimeZone:使用這樣

[NSTimeZone resetSystemTimeZone]; 
[dateFormatter setTimeZone:[NSTimeZone systemTimeZone]]; 

。有關這兩種方法,請閱讀文檔。希望能幫助到你。乾杯

編輯:

如果日期從服務器來是在特定時間區(服務器的時區)。然後,你將需要獲得時區

NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:"Server timezone name"]; 
NSInteger serverDifference = [timeZone secondsFromGMT]; 

[NSTimeZone resetSystemTimeZone]; 
NSTimeZone *systemTimeZone = [NSTimeZone systemTimeZone]; 
NSInteger systemDifference = [systemTimeZone secondsFromGMT]; 

NSInteger difference = systemDifference - serverDifference; 
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:difference]]; 

嘗試這種情況下,你就別再從服務器0 GMT時間差。

+0

只有當服務器發送的日期或CMT 0時區的字符串日期有效時,纔會有效,如果沒有,則會爲日期增加額外時間。 – danypata

+0

@danypata是儀式。我已經編輯 – croyneaus4u

+0

現在你值得+1這個;) – danypata

0
+(NSDate *)DateUKFormatMonthFromString:(NSString *)date AndTimeZoneName:(NSString *) timeZoneName 
{ 
NSDateFormatter *formatter = [[NSDateFormatter alloc]init]; 
[formatter setDateFormat:@"MM/dd/yyyy HH:mm:ss"]; 
NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:timeZoneName]; 
[formatter setTimeZone:timeZone]; 
NSDate *date1 = [formatter dateFromString:date]; 
[formatter setTimeZone:[NSTimeZone systemTimeZone]]; 
return date1; 
} 

最後,這對我工作...似乎iOS會照顧自己的時區差異...... !!!