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