iPhone Date Picker переносится на 2010 27 декабря? - PullRequest
12 голосов
/ 17 ноября 2009

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

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

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

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

ОБНОВЛЕНИЕ 2: Кто-нибудь? Все еще смотрю, все еще не находя ...

ОБНОВЛЕНИЕ 3: Решение так и не найдено. Давай! Это интересная головоломка!

ОБНОВЛЕНИЕ 4: Ответ все еще не найден. Я отправил приложение, и оно теперь в магазине приложений. Все еще хотел бы, чтобы эта проблема была решена, чтобы я мог обновить приложение.

Ответы [ 3 ]

3 голосов
/ 31 декабря 2009

Получается строка формата даты, используемая для настройки NSDateFormatter, который вызывал это для меня.

"гггг" соответствует 4-значному году, а ГГГГ соответствует году , начиная с воскресенья 1-й недели года . Почему кому-то захочется, чтобы это было кем-то догадаться, и было бы очень полезно, если бы Apple предоставила ссылку на свой список спецификаторов формата, но вы идете.

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

3 голосов
/ 29 декабря 2009

Может быть проблема в том, что когда вы находитесь на последней неделе месяца, а в неделе осталось меньше 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;

Надеюсь, это будет вам полезно.

1 голос
/ 30 декабря 2009

Этот пост на TUAW описывает похожую проблему в PhotoBooth на Mac OS X:

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

Один комментатор соглашается с vikas, что это проблема конца недели.

...