Работа с датами в iOS для новичков вызывает затруднения из-за своей нетривиальной реализации. В этом посте несколько готовых рецептов для работы с датами в приложениях iPhone.
Для манипуляции с датами используется три класса: хранение дат — NSDate, манипуляция с датами — класс NSCalendar, хранение компонент даты — класс NSDateComponents.
Получение года, месяца и числа
// Создаем календарь NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; // Задаем компоненты, которые мы хотим извлечь из даты NSUInteger unitFlag = NSMonthCalendarUnit | NSYearCalendarUnit | NSDayCalendarUnit; // Получаем компоненты даты NSDateComponents *components = [cal components:unitFlag fromDate:[datePicker date]]; // Получаем значения года, месяца и числа txtYear.text = [NSString stringWithFormat:@"%i", [components year]]; txtMonth.text = [NSString stringWithFormat:@"%i", [components month]]; txtDay.text = [NSString stringWithFormat:@"%i", [components day]]; // Освобождаем ресурсы [cal release];
Установка года, месяца и числа
// Создаем календарь и компоненты даты NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDateComponents *components = [[NSDateComponents alloc] init]; // Задаем значение года, месяца и числа [components setYear:2011]; [components setMonth:12]; [components setDay:31]; // Устанавливаем новые компоненты даты (формируем новую даты) NSDate *date = [cal dateFromComponents:components]; // Освобождаем ресурсы [components release]; [cal release];
Вычисление новой даты
// Создаем календарь и компоненты NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDateComponents *components = [[NSDateComponents alloc] init]; // Задаем значения компонентов, которые мы хотим прибавить к текущей дате // Если задать отрицательное значение, то оно будет вычитаться из текущей даты [components setYear:1]; [components setMonth:2]; [components setDay:3]; // Вычисляем новую дату, прибавляя к текущей дате 1 год, 2 месяца и 3 дня NSDate *today = [[NSDate alloc] init]; NSDate *newDate = [cal dateByAddingComponents:components toDate:today options:0]; [today release]; // Освобождаем ресурсы [components release]; [cal release];
ShareFile API PHP
Музей Исходного Кода
Java EE Dev
Блог о Java технологиях
Блог о программировании