ios - 获取两个 NSDate 之间的准确时差?

标签 ios objective-c cocoa-touch nsdate

有没有办法找出两个 NSDate 之间的准确差异?

我找到了解决方案,但它们不够准确。我需要考虑夏令时,不同的月份有不同的天数等。

计算分钟、小时和天的简单计算(例如/60/60/24 等)并未将它们考虑在内。

假设我需要算出现在的时间 ([NSDate date]) 和 12 月 25 日晚上 10:22(用户使用日期选择器选择的日期 [datePicker date] ]) 举个例子,我该怎么做?
知道确切的时差不是关键,只要我有准确的日月年差就可以了。

最佳答案

来自 Apple 的 Date & Time Programming Guide :

list 12 获取两个日期之间的差异

NSDate *startDate = ...;
NSDate *endDate = ...;

NSCalendar *gregorian = [[NSCalendar alloc]
                 initWithCalendarIdentifier:NSGregorianCalendar];

NSUInteger unitFlags = NSMonthCalendarUnit | NSDayCalendarUnit;

NSDateComponents *components = [gregorian components:unitFlags
                                          fromDate:startDate
                                          toDate:endDate options:0];
NSInteger months = [components month];
NSInteger days = [components day];

关于ios - 获取两个 NSDate 之间的准确时差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8387360/

相关文章:

ios - 在 Aspect Fit 上制作 UIView 的背景图像

ios - 跟踪 ABRecordRef 中的某些电子邮件更改

ios - 如何在iOS中格式化UINavigationItem的标题?

ios - 更改网站宽度以符合 UIWebView

ios - SIRI 不会根据提供的参数回复,而是打开 "Shortcut"应用程序

ios - iOS7 中 BOOL 的奇怪行为

ios - Alamofire 上传巨大的文件

iphone - 单击作为 subview 添加到 UILabel 的 UIButton 将打开远离按钮的弹出窗口。?

objective-c - 自定义 UITableViewCell + resignFirstResponder

iphone - 我可以从另一个 View 传递/访问原始数据类型(float、double、int)吗?