如何从NSDate中移除时区偏移量



我正试图从NSDateFormatter获得yyyy-MM-dd HH:mm

但是字符串吐出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);

这是因为您打印NSDate对象。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来操作日期并计算新日期是一个很好的实践,而不仅仅是添加时间间隔。

我先试过你的编码

 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

然后我尝试用string

NSString *stringDate = [format stringFromDate:pastDate];
NSLog(@"The Date is: %@", stringDate);
现在打印的结果是
The Date is: 2016-07-31 20:00

字符串没有+0000

相关内容

  • 没有找到相关文章

最新更新