所以我在我的一个应用程序中实现了一个UIDatepicker,用于调度和自动拨号电话会议......除了测试之外,一切都已经准备就绪了,我注意到当日期从12月26日到12月27日结束时,年份发生了变化到2010年。
我甚至把它推到了2011年......当12月25日改为26日时,它会发生变化....但等等......在2012年12月31日 - 1月1日正确翻身......然后它在2013年回到29日至30日。是否存在某种天文现象,我不知道发生了什么,或者苹果公司是否运行了一些我不知道的疯狂Heechee日历?日历应用程序正常工作......
最可能的解释是,我错过了一些非常明显的东西,当我意识到这一点时,我会打耳光。但是,嘿,我还没有睡觉......哇我不记得是不是两天或三天了。怜悯并帮助我。
更新:所以也许这不是简单的事情。还在这里寻找答案!我真的是唯一经历过这种情况的人吗?我敢打赌,当12月底到来时,更多的人会遇到同样的障碍。
UPDATE2:任何人?仍在寻找,仍未找到...
更新3:仍然没有找到解决方案。来吧!这是一个有趣的难题!
更新4:仍未找到答案。我已经提交了应用程序,现在它已经在appstore中了。仍然希望看到这个问题得到解决,以便我可以更新应用程序。
答案 0 :(得分: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;
我希望它对你有用。
答案 1 :(得分:3)
用它来设置用于设置NSDateFormatter的日期格式字符串,这对我来说就是这样。
“yyyy”对应于4位数年份,而YYYY对应于从年度第1周的星期日开始的年份。为什么有人会想要这个是任何人的猜测,如果Apple提供了一个指向其格式说明符列表的链接,那将会非常有帮助,但是你去了。
只需确保您的格式字符串具有小写的年份组件,并且应该对其进行排序。
答案 2 :(得分: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这是一个周末问题。