2009-11-16 1 views
12

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

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

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

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

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

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

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

+0

Просто из любопытства, какой календарь вы установили для своего UIDatePicker? Вы используете currentCalendar или autoupdatingCurrentCalendar? Я предполагаю, что там что-то может быть не так. –

+0

Хорошая идея. Тем не менее, я просто попробовал их обоих, и они оба перевернулись в те же дни. Любые другие идеи? – Taylor

+0

У вас есть приложения, которые используют этот компонент? Он работает для них? –

ответ

3

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

Надеюсь, это пригодится вам.

+0

Отличная идея! Я пойду проверить его в своем коде и посмотреть, что произойдет. – Taylor

+0

Это сработало для меня! Спасибо за помощь! – Taylor

3

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

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

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