Таким образом, я реализовал UIDatepicker в одном из моих приложений для планирования и автоматического набора телеконференций... все в значительной степени готово пойти кроме, при тестировании я заметил это, когда дата переворачивается с 26-го декабря до 27-го декабря, изменения года в 2010.
Я даже прокрутил его вперед к 2011..., и это изменяется, когда 25-го декабря изменяется на 26-е...., но ожидайте... в 2012, это правильно переворачивается 31 декабря - 1 января... и затем его спина к 29-му - 30-му в 2013. Есть ли некоторое астрономическое явление, я не знаю о продолжении, или Apple работает на некотором сумасшедшем календаре Heechee, о котором я не знаю? Календарное приложение работает правильно...
Наиболее вероятное объяснение, я пропускаю что-то столь очевидное, что я хлопну меня, когда я пойму это. Но эй, я не спал в..., ничего себе, я не помню если его два дня или три. Сжальтесь и помогите мне здесь.
ОБНОВЛЕНИЕ: Таким образом, возможно, это не было что-то простое. Все еще ища ответ здесь! Я - действительно единственный человек, который испытал это?? Я поставлю, когда конец декабря будет вращаться, больше людей поразит тот же контрольно-пропускной пункт.
UPDATE2: Кто-либо? Все еще смотря, все еще не находя...
UPDATE3: Все еще не нашли решение.Ну же! Это - интересная загадка!
UPDATE4: Все еще никакой ответ не найден. Я отправил приложение, и это находится теперь в Appstore. Все еще хотел бы видеть эту проблему, решенную, таким образом, я могу обновить приложение.
Возможно, проблема в том, что когда вы находитесь в последней неделе месяца и в текущем месяце осталось менее 7 дней, тогда, возможно, API относился к неделе как к первой неделе следующего месяца. С декабря 2012 года, когда в последней неделе месяца уже 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;
Надеюсь, это вам пригодится.
.В этой заметке на TUAW описывается аналогичная проблема в PhotoBooth на Mac OS X:
http://www.tuaw.com/2009/12/29/beware-photo-booth-time-stamps-its-a-bug-not-a-feature/
Один из комментаторов согласен с викой, что это вопрос конца недели.
Оказывается, это строка формата Date, которая использовалась для настройки NSDateFormatter, что и послужило причиной этого для меня.
"yyyy" соответствует 4-значному году, а YYYY соответствует году , начинающемуся с воскресенья 1-ой недели года. Зачем кому-то это понадобилось - это чья-то догадка, и было бы действительно полезно, если бы Apple предоставила ссылку на свой список спецификаторов формата, но вот так.
Просто убедитесь, что в строке формата есть компонент года в нижнем регистре, и ее нужно отсортировать.
.