有这样的第三方扩展NSDate
吗?
我需要一些方法来调整日期(增加或减少日/月/年)并将日期对象保存在同一内存中(因此myDate = getNewDateByAdjustingOldOne (myDate);
不可接受)。
如果没有已经实现的可变日期,是否有可能获取内部数据(考虑到类接口NSDate
中无法访问内部数据)。NSDate
您可以让所有需要共享NSDate
对象的对象都存储一个指向该指针的指针,即
NSDate** pDate
然后让他们的所有操作在&pDate
. 在您正在调整日期的班级中,继续重置
&pDate = NSDate* *newDate*
然后所有对象将同步。
确实是执行 myDate = getNewDateByAdjustingOldOne (myDate); 的内存开销;这么小我真的不用担心。过早的优化会导致完全可以避免的错误。
您可以将NSCalendar
andNSDateComponents
用于可变日期。设置“预制”NSDateComponents
以添加/减去默认时间量或根据需要进行设置。
NSDateComponents *comps = [NSDateComponents alloc] init];
comps.day = 1;
NSCalendar *cal = [NSCalendar currentCalendar];
// will wind up adding 1 day to the original date.
NSDate *newDate = [cal dateByAddingComponents:comps toDate:origDate options:NSWrapCalendarComponents];
Apple 在Calendrical Calculations上写了一些不错的文档。