Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何在NSDate中跳过时间?_Objective C_Nsdate - Fatal编程技术网

Objective c 如何在NSDate中跳过时间?

Objective c 如何在NSDate中跳过时间?,objective-c,nsdate,Objective C,Nsdate,我想得到日期之间的差异跳过时间意味着如果一个日期是2012年1月13日下午11点,另一个日期是2012年1月14日上午12点,那么差异应该是1天而不是0天。我的意思是我只想得到日期之间的差异,2012年1月14日至2012年1月13日,跳过时间。我知道我可以使用NSDATE API来计算差异,但问题是考虑时间。所以我想在计算差异时,我会跳过时间,但是我不知道如何跳过时间,因为如果我使用NSDATEFALATATER,它将返回字符串而不是日期。请帮我做什么?< /P> 提前谢谢 您需要做的是首先获

我想得到日期之间的差异跳过时间意味着如果一个日期是2012年1月13日下午11点,另一个日期是2012年1月14日上午12点,那么差异应该是1天而不是0天。我的意思是我只想得到日期之间的差异,2012年1月14日至2012年1月13日,跳过时间。我知道我可以使用NSDATE API来计算差异,但问题是考虑时间。所以我想在计算差异时,我会跳过时间,但是我不知道如何跳过时间,因为如果我使用NSDATEFALATATER,它将返回字符串而不是日期。请帮我做什么?< /P>
提前谢谢

您需要做的是首先获取每个日期的
NSDateComponents
。一旦你这样做了,你就可以比较“一天”的组成部分,得出你的差异

NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
[cal setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0]];
NSDate *date1 = ....;
NSDate *date2 = ....;
NSDateComponents *comps1 = [cal components:NSDayCalendarUnit|NSYearCalendarUnit|NSMonthCalendarUnit fromDate:date1];
NSDateComponents *comps2 = [cal components:NSDayCalendarUnit|NSYearCalendarUnit|NSMonthCalendarUnit fromDate:date2];

date1 = [cal dateFromComponents:comps1];
date2 = [cal dateFromComponents:comps2];

NSDateComponents *diffComps = [cal components:NSDayCalendarUnit fromDate:date1 toDate:date2 options:0];

NSLog(@"Days diff = %d", diffComps.day);

date API让人觉得有点奇怪,但一旦你这么做了,它就会非常强大。

如果年或月有差异呢?这只是一个例子。很抱歉问这个问题,但我真的不明白,“initWithCalendarIdentifier”是什么?如果ipad中的日历发生了变化怎么办?这是一种命名的日历样式
nsgregorianalendar
是西方世界使用的标准日历,但api允许您根据需要选择其他日历。这不是设备之间的变化。我明白你的意思,但我的问题是,如果在代码中我使用NSGregorianCalendar并计算差异,如果用户从ipad更改日历样式,那么我的api将不会返回正确的值,对吗?@Nuzhat Zari:尝试使用
[NSCalendar currentCalendar]
获取用户的日历。