我有两个NSDate对象,我希望两者之间的差异和结果应该再次是一个NSDate对象。任何想法如何实现这一点?在这里,我试图解决一个独特的问题,我必须找出经过的时间,然后本地化经过的时间。如果我在NSDate对象中有经过的时间,我就可以本地化它。所以想到创建一个NSDate对象,它的时间组件与两个日期之间的时间间隔相同,这样我就可以使用NSDateFormatter来本地化它。
idv4meu81#
NSDate表示一个时间示例,所以用NSDate表示时间的 * 间隔 * 是没有意义的。你需要的是NSDateComponents:
NSDate
NSDateComponents
NSDate *dateA; NSDate *dateB; NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian]; NSDateComponents *components = [calendar components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:dateA toDate:dateB options:0]; NSLog(@"Difference in date components: %i/%i/%i", components.day, components.month, components.year);
oipij1gg2#
如果从05/05/2002减去12/12/2001,那么日期是什么?两个日期之间的时间距离不能是日期,它总是某种间隔。您可以使用timeIntervalSinceDate:来计算间隔。要本地化,可以尝试以下步骤:
qc6wkl3g3#
根据NSDate类参考,您可以使用示例方法来执行以下操作-1.如何比较两个NSDate变量?答案:isEqualToDate:1.如何找到两个NSDate变量之间的差异?答案:timeIntervalSinceDate:
isEqualToDate:
timeIntervalSinceDate:
bfrts1fy4#
您可以使用NSDate的timeIntervalSinceDate:计算两个日期之间的时间间隔,但是将时间间隔表示为日期没有任何意义。
c3frrgcw5#
使用-compare有一个简单的方法:在NSDate中:
NSDate *dateA = [NSDate dateWithTimeIntervalSinceNow:100]; NSDate *dateB = [NSDate dateWithTimeIntervalSinceNow:200]; NSDate *myDate = [NSDate dateWithTimeIntervalSinceNow:150]; NSArray *dateArray = [NSArray arrayWithObjects:dateA, dateB, myDate, nil]; NSArray *sortedArray = [dateArray sortedArrayUsingSelector:@selector(compare:)]; if ([myDate isEqualToDate:[sortedArray objectAtIndex:1]]) NSLog(@"myDatea between dateA and dateB");
5条答案
按热度按时间idv4meu81#
NSDate
表示一个时间示例,所以用NSDate
表示时间的 * 间隔 * 是没有意义的。你需要的是NSDateComponents
:oipij1gg2#
如果从05/05/2002减去12/12/2001,那么日期是什么?两个日期之间的时间距离不能是日期,它总是某种间隔。您可以使用timeIntervalSinceDate:来计算间隔。
要本地化,可以尝试以下步骤:
qc6wkl3g3#
根据
NSDate
类参考,您可以使用示例方法来执行以下操作-1.如何比较两个NSDate变量?答案:
isEqualToDate:
1.如何找到两个NSDate变量之间的差异?答案:
timeIntervalSinceDate:
bfrts1fy4#
您可以使用
NSDate
的timeIntervalSinceDate:
计算两个日期之间的时间间隔,但是将时间间隔表示为日期没有任何意义。c3frrgcw5#
使用-compare有一个简单的方法:在NSDate中: