2016-08-24 63 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