12

所以我在我的一个应用程序中实现了一个 UIDatepicker 来安排和自动拨号电话会议......一切都准备好了,除了在测试时我注意到当日期从 12 月 26 日滚动到 12 月 27 日时,年份变为 2010 年。

我什至将其前滚到 2011 年...当 12 月 25 日更改为 26 日时它会更改...但是等等...在 2012 年,它在 12 月 31 日至 1 月 1 日正确滚动...然后返回到2013 年 29 日至 30 日。是否有某种我不知道的天文现象正在发生,或者 Apple 是否在我不知道的一些疯狂的 Heechee 日历上运行?日历应用程序正常工作...

最可能的解释是我遗漏了一些如此明显的东西,以至于当我意识到时我会扇自己一巴掌。但是,嘿,我还没睡……哇,我不记得是两天还是三天。可怜我,帮帮我吧。

更新:所以也许这不是一件简单的事情。仍然在这里寻找答案!真的只有我一个人经历过吗??我敢打赌,当 12 月底到来时,更多的人会遇到同样的障碍。

更新2:有人吗?还在找,还是没找到……

UPDATE3:仍然没有找到解决方案。来吧!这是一个有趣的谜题!

UPDATE4:仍然没有找到答案。我已经提交了应用程序,它现在在应用程序商店中。仍然希望看到这个问题得到解决,以便我可以更新应用程序。

4

3 回答 3

3

可能存在这样的问题,即当您在该月的最后一周并且该周在当月剩余的时间少于 7 天时,那么 API 可能将该周视为下个月的第一周。由于 2012 年 12 月的最后一周已经有 7 天,所以当月没有问题。

我在这里遇到了同样的问题,我解决了。

- (int) currentWeekOfMonth
{
    return CFCalendarGetOrdinalityOfUnit (
           CFCalendarCopyCurrent(),
           kCFCalendarUnitWeek,
           kCFCalendarUnitMonth,
           [self absoluteTime]);
}

我的要求是显示周数,为此我计算每月第一周的周数,并将其添加到每月的总周数中。

int currentWeekNumberInYear =   [_calendarInfo currentWeekOfYear];
int currentWeekNumberInMonth = [_calendarInfo currentWeekOfMonth];
currentWeekNumberInYear = currentWeekNumberInYear-currentWeekNumberInMonth +1;
currentWeekNumberInYear = currentWeekNumberInYear<0 ? (NSInteger)[_calendarInfo weeksInMonth] ==5 ?49:48   : currentWeekNumberInYear;

我希望它对你有用。

于 2009-12-29T15:36:27.260 回答
3

原来它是用于设置 NSDateFormatter 的日期格式字符串,这对我造成了这种影响。

"yyyy" 对应 4 位数的年份,而 YYYY 对应从一年中第一周的星期日开始的年份。为什么有人会想要这是任何人的猜测,如果 Apple 提供指向他们的格式说明符列表的链接,那将真的很有帮助,但是你去吧。

只需确保您的格式字符串具有小写的年份组件,并且应该对其进行排序。

于 2009-12-31T00:53:37.153 回答
1

TUAW 上的这篇文章描述了 Mac OS X 上 PhotoBooth 中的类似问题:

http://www.tuaw.com/2009/12/29/beware-photo-booth-time-stamps-its-a-bug-not-a-feature/

一位评论者同意 vikas 的观点,即这是一个周末问题。

于 2009-12-30T01:26:13.600 回答