ios 两个NSDate对象之间的差异--结果也是NSDate

pqwbnv8z  于 2023-04-22  发布在  iOS
关注(0)|答案(5)|浏览(165)

我有两个NSDate对象,我希望两者之间的差异和结果应该再次是一个NSDate对象。任何想法如何实现这一点?
在这里,我试图解决一个独特的问题,我必须找出经过的时间,然后本地化经过的时间。如果我在NSDate对象中有经过的时间,我就可以本地化它。所以想到创建一个NSDate对象,它的时间组件与两个日期之间的时间间隔相同,这样我就可以使用NSDateFormatter来本地化它。

idv4meu8

idv4meu81#

NSDate表示一个时间示例,所以用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);
oipij1gg

oipij1gg2#

如果从05/05/2002减去12/12/2001,那么日期是什么?两个日期之间的时间距离不能是日期,它总是某种间隔。您可以使用timeIntervalSinceDate:来计算间隔。
要本地化,可以尝试以下步骤:

qc6wkl3g

qc6wkl3g3#

根据NSDate类参考,您可以使用示例方法来执行以下操作-
1.如何比较两个NSDate变量?答案:isEqualToDate:
1.如何找到两个NSDate变量之间的差异?答案:timeIntervalSinceDate:

bfrts1fy

bfrts1fy4#

您可以使用NSDatetimeIntervalSinceDate:计算两个日期之间的时间间隔,但是将时间间隔表示为日期没有任何意义。

c3frrgcw

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");

相关问题