2016-08-24 24 views
0

我想從NSDateFormatter中獲取yyyy-MM-dd HH:mm如何從NSDate中刪除時區偏移

但串吐出Historical Date: 2016-08-23 14:03:00 +0000

我不想秒或+0000。

我在做什麼錯?

int seconds = -(days * (24 * 60 * 60)); //24 hours, times 60 minutes, times 60 seconds 
NSDateFormatter *format = [[NSDateFormatter alloc] init]; 
[format setDateFormat:@"yyyy-MM-dd HH:mm"]; 

NSString* stringFromDate = [format stringFromDate:[NSDate date]]; 
NSDate * pastDate = [[format dateFromString:stringFromDate] dateByAddingTimeInterval:seconds]; 

NSLog(@"Date: %@", pastDate); 
+0

因爲NSDate的將獲得+0000,它的的NSString不會擁有它。 – Larme

回答

2

這是因爲您印刷NSDate對象。對象封裝了一個時間點,它不負責它的字符串表示。 您真正需要做的是計算確切的日期,然後將其格式化爲NSString

類似的東西:

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm"]; 
NSDate *pastDate = [[NSDate date] dateByAddingTimeInterval:seconds]; 

NSString *yourDateInString = [dateFormatter stringFromDate:pastDate]; 
NSLog(@"%@", yourDateInString); 

而且,使用NSCalendarNSCalendarComponents的日期來處理和計算新日期,而不是僅僅將時間間隔很好的做法。

+0

完美!下次我會記住在格式化之前計算時間。關心一個簡單的例子?它是否與iOS 7向後兼容? –

0

我想你的編碼第一

int seconds = -(24 * (24 * 60 * 60)); //24 hours, times 60 minutes, times 60 seconds 
NSDateFormatter *format = [[NSDateFormatter alloc] init]; 
[format setDateFormat:@"yyyy-MM-dd HH:mm"]; 
NSString* stringFromDate = [format stringFromDate:[NSDate date]]; 
NSDate * pastDate = [[format dateFromString:stringFromDate] dateByAddingTimeInterval:seconds]; 
NSLog(@"The pastDate is - %@",pastDate); 

打印的結果是

The pastDate is - 2016-07-31 14:30:00 +0000 

的NSDate獲得+0000

然後我嘗試用繩子

NSString *stringDate = [format stringFromDate:pastDate]; 
NSLog(@"The Date is: %@", stringDate); 

現在打印的結果是

The Date is: 2016-07-31 20:00 

字符串沒有+0000