没有从 NSDate 获得正确的日期

Posted

技术标签:

【中文标题】没有从 NSDate 获得正确的日期【英文标题】:Not getting correct date from NSDate 【发布时间】:2015-02-20 05:00:13 【问题描述】:

我是 ios 编程新手,我想获得两个 NSDate 对象之间的差异,但我无法计算正确的差异,因为我没有从 [NSDate Date] 获得正确的日期。

查看随附的屏幕截图。我没有明白我做错了什么?

我已经尝试过this one 和this one also 的解决方案。

如果我做错了什么,请提出建议?

【问题讨论】:

这些建议都不适合你的原因是因为你试图格式化日期之前你计算出间隔。先获取区间,再格式化日期。 @SASmith 检查屏幕截图,我的问题是我得到了错误的数据“2015-19-20”,这是不可能的,所以它没有工作,但现在我明白了,它正在工作。 您的屏幕截图是关于格式化而不是关于差异。这有点误导,因为您的问题是询问如何获得时间间隔而不是如何显示它。 [NSDate date]; 会在它被调用的那一刻给你时间,而不是时差。 我会考虑将问题重命名为格式化差异而不是获取差异以避免管理员特权人员关闭它或将其标记为重复 :-) 我希望你已经解决了你的问题现在:-) 是的,感谢您的建议 :-) @SASmith 【参考方案1】:

试试

const NSTimeInterval difference = [date1 timeIntervalSinceDate:date2];

这将返回两个日期之间的秒数

【讨论】:

感谢您的帮助,但我在错误的格式中遇到了错误,我已经解决了。【参考方案2】:

试试这个,这将帮助您分别获得差异:-

unsigned int unitFlags = NSHourCalendarUnit | NSMinuteCalendarUnit | NSDayCalendarUnit | NSMonthCalendarUnit;

NSDateComponents *conversionInfo = [currCalendar components:unitFlags fromDate:fistDate   toDate:secondDate  options:0];

int months = [conversionInfo month];
int days = [conversionInfo day];
int hours = [conversionInfo hour];
int minutes = [conversionInfo minute];

[NSString stringWithFormat:@"%d months , %d days, %d hours, %d min", months, days, hours, minutes];

【讨论】:

感谢您的帮助,但我在错误的格式中遇到了错误,我已经解决了。【参考方案3】:

我得到了解决方案,它本身只需要替换

[formatter setDateFormat:@"yyyy-mm-dd hh:mm:ss"];[formatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];

它成功了。

【讨论】:

以上是关于没有从 NSDate 获得正确的日期的主要内容,如果未能解决你的问题,请参考以下文章

从 NSDate() 保存一个日期,在 CoreData 的末尾没有 +0000

从 NSDateComponents 创建的 NSDate 不正确?

NSDate() 或 Date() 显示错误的时间

如何在所有情况下从 NSDate 获得正确的年份?

如何在 [NSDate 日期] 当天 00:00 获取 NSDate?

OC - 时间日期类NSDate