2013-04-16 77 views
0

我以這種格式獲取某些日期「04/11/13 19:37:00」我想將此日期轉換爲本地時區,下面是我正在使用的代碼。打印時更改日期格式描述

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
dateFormatter.dateFormat = @"MM/dd/yy HH:mm:ss"; 

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

NSDate *date = [dateFormatter dateFromString:dateString]; 
NSLog(@"date value %@",date); 

我面臨是我使用調試器時我把鼠標在「日期」變量它顯示「2013年4月12日1時07分00秒IST」這是正確的出了問題把我需要的。但是當我使用NSLog打印相同的「日期」變量時,我得到「2013-04-11 19:37:00 +0000」。我怎樣才能得到正確的格式可以解釋任何一個,我是否需要更改dateformat

+0

形成dateString的NSDate的描述將始終處於UTC 。你可以看到IST時區是UTC之前的5.30小時,所以你的日期是正確的。 – Anupdas

+0

如何將「2013-04-11 19:37:00 +0000」轉換爲當地時區「2013-04-12 01:07:00 IST」like this – kiri

+0

我假設你所得到的時間是GMT然後您想要將UTC轉換爲本地時區。如果是這種情況,您可以在dateFormatter中將時區設置爲本地。 – Anupdas

回答

2

NSLog顯示NSDate固定格式的對象。如果要以特定格式記錄日期,請使用NSDateFormatterNSDate轉換爲NSString,然後記錄該字符串。請記住,記錄日期僅用於調試目的。日誌中的格式確實沒有關係。

0

如果您想將UTC中的dateString轉換爲本地時區,則需要分兩步進行。

1.首先形成由對應的時區設置爲dateFormatter

2.將當地時區的,以dateFormatter日期,並從日期

NSString *dateString = @"04/16/13 11:12:00"; 

NSDateFormatter* dateFormatter = [[NSDateFormatter alloc] init]; 
NSLocale *enUSPOSIXLocale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US_POSIX"]; 
[dateFormatter setLocale:enUSPOSIXLocale]; 
dateFormatter.dateFormat = @"MM/dd/yy HH:mm:ss"; 

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

NSDate* date = [dateFormatter dateFromString:dateString]; 

[dateFormatter setTimeZone:[NSTimeZone localTimeZone]]; 

NSString *localDateString = [dateFormatter stringFromDate:date]; 

NSLog(@"%@",localDateString);