gpt4 book ai didi

ios - -[NSCalendar 组件 :fromDate:toDate:options] always returns 0 diff

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:46:18 26 4
gpt4 key购买 nike

我已经阅读了一些关于如何在 iOS 中计算两个日期之间的差异的线程,这里有一个示例似乎也由 Apple 文档提供,我用它来确定两个日期是否相同(忽略时间) .但是 components: 方法总是返回 year=0, month=0, day=0,即使这两个日期不同。我不知道为什么...我很感激你的想法...

+ (BOOL)isSameDate:(NSDate*)d1 as:(NSDate*)d2 {
if (d1 == d2) return true;
if (d1 == nil || d2 == nil) return false;

NSCalendar* currCal = [NSCalendar currentCalendar];

// messing with the timezone - can also be removed, no effect whatsoever:
NSTimeZone* tz = [NSTimeZone timeZoneForSecondsFromGMT:0];
[currCal setTimeZone:tz];

NSDateComponents* diffDateComps =
[currCal components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit
fromDate:d1 toDate:d2 options:0];

return ([diffDateComps year] == 0 && [diffDateComps month] == 0 && [diffDateComps day] == 0);
}

最佳答案

好的,我发现了问题,并不是每个日期都会发生,只有连续的日期才会发生。事实证明,'isSameDate' 没有正确实现,因为 component:fromDate:toDate 将在 dec 23 8:00、dec 24 07:59 返回 0,即使时间组件不在组件标志中也是如此!但它将在 12 月 23 日 8:00、12 月 24 日 8:01 返回 1。

为了修复我的方法,我需要执行其他操作:

NSDateComponents* c1 =
[currCal components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit
fromDate:d1];

NSDateComponents* c2 =
[currCal components:NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit
fromDate:d2];

return ([c1 day] == [c2 day] && [c1 month] == [c2 month] && [c1 year] == [c2 year]);

关于ios - -[NSCalendar 组件 :fromDate:toDate:options] always returns 0 diff,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14019921/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com