Подтвердить что ты не робот

IPhone Дата Picker переходит к 2010 году 27 декабря?

Итак, я применил UIDatepicker в одном из моих приложений для планирования и автодозвона телеконференций... все в значительной степени готово к работе, за исключением того, что при тестировании я заметил, что, когда дата свертывается с 26 декабря по 27 декабря, изменения года до 2010 года.

Я даже перевел его на 2011 год... и он меняется, когда 25 декабря меняется на 26-е.... но подождите... в 2012 году он правильно перевернется 31 декабря - 1 января... и затем его возвращение к 29-30-м в 2013 году. Есть ли какое-то астрономическое явление, о котором я не знаю, идет ли речь или работает Apple на каком-то сумасшедшем календаре Хичи, о котором я не знаю? Приложение календаря работает правильно...

Наиболее вероятным объяснением является то, что мне не хватает чего-то столь очевидного, что я ударю себя, когда я это осознаю. Но, эй, я не спал... ничего себе, я не помню, было ли это два дня или три. Пожалейте и помогите мне здесь.

UPDATE: Возможно, это было не просто. Все еще ищете ответ здесь! Я действительно единственный человек, который испытал это? Я буду держать пари, когда в конце декабря катится, больше людей попадут в один и тот же блокпост.

UPDATE2: Кто-нибудь? Все еще смотрю, все еще не находя...

UPDATE3: все еще не найдено решение. Давай! Это интересная головоломка!

UPDATE4: ответа не найдено. Я отправил приложение, и теперь он находится в AppStore. По-прежнему хотелось бы, чтобы эта проблема была решена, поэтому я могу обновить приложение.

4b9b3361

Ответ 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 предоставит ссылку на их список спецификаторов формата, но там вы идете.

Просто убедитесь, что ваша строка формата содержит компонент года в нижнем регистре и его следует сортировать.