2013-08-31 120 views
0

我得到的日期和時間與這一空白:NSDateFormatter給我回格林威治時間

-(void)getDay 
{ 

NSDate *choice = [NSDate date]; 

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 

[dateFormatter setTimeZone:[NSTimeZone localTimeZone]]; 

[dateFormatter setDateFormat:@"yy"]; 
year = [[dateFormatter stringFromDate:choice] intValue]; 

[dateFormatter setDateFormat:@"MM"]; 
month = [[dateFormatter stringFromDate:choice] intValue]; 

[dateFormatter setDateFormat:@"dd"]; 
day = [[dateFormatter stringFromDate:choice] intValue]; 


[dateFormatter setDateFormat:@"HH"]; 
hour = [[dateFormatter stringFromDate:[NSDate date]] intValue]; 

// NSLog(@"hour: %d",hour); 

[dateFormatter setDateFormat:@"mm"]; 
minute = [[dateFormatter stringFromDate:[NSDate date]] intValue]; 

[dateFormatter setDateFormat:@"ss"]; 
second = [[dateFormatter stringFromDate:[NSDate date]] intValue]; 

} 

如果我看到日誌小時......它給了我正確的小時我的本地時間,但是當我把在另一NSDate的,我需要創建時變更,成爲格林威治時間價值,這是我使用的代碼:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"dd-MM-yyyy HH:mm:SS"]; 
    // NSLog(@"hour: %d",hour); 
    //this log still gives me the right hour 

    [dateFormatter setTimeZone:[NSTimeZone localTimeZone]]; 

    self.myDate = [dateFormatter dateFromString:[NSString stringWithFormat:@"%d-%d-%d %d:%d:%d",day,month,year,hour,minute,second]]; 
    NSLog(@"my date: %@",myDate); 

這最後的日誌是這樣的:

2013年8月31日05:14:12.905對myApp [25987:904]我的日期:2013年8月31日15:14:00 +0000

我的時間應該是5:14,但相反,它是15 :14格林威治時間... 爲什麼會發生這種情況,我該如何獲得當地時間,而不是格林威治時間? 感謝您的幫助。

+0

可能的重複http://stackoverflow.com/questions/8466744/getting-date-from-nsdate-date-off-by-a-few-hours,http://stackoverflow.com/questions/4547379/ NSDate的 - 是 - 不回 - 我的本地時區,默認時區-的設備。 –

+0

在控制檯中打印一個'NSDate'將始終顯示GMT。如果您設置了一個斷點並在本地變量中查看它,您將在本地時區中看到該日期。 – memmons

回答

0

你的代碼沒有問題。問題是NSLog以GMT時間顯示日期。嘗試在NSLog中放置一個斷點,您將看到self.myDate具有正確的時間,而NSLog以GMT格式顯示時間。

我意識到,在格式化程序串中,您使用秒數爲SS。你必須使用ss。

+0

非常感謝! – Blue

相關問題