вторник, 18 августа 2015 г.

16. Время и дата.

В этом  уроке рассказывается как работать с датой, временем, таймерами.

Метод date возвращает текущую время и дату:
    NSDate *date =[NSDate date];
     NSLog(@"Date: %@",date);

Можно создать дату используя временные интервалы в секундах
  NSLog(@"%@",[date dateByAddingTimeInterval:5000] );
    NSLog(@"%@",[date dateByAddingTimeInterval:-5000] );

Сравнение двух дат:
   [date compare:[date dateByAddingTimeInterval:-5000]];

Вот еще один метод создание даты с 2001г
    NSDate *date2=[NSDate dateWithTimeIntervalSinceReferenceDate:10];
    NSLog(@"date2=%@",date2);

ДатаФорматтер используется для форматировании вывода даты и времени

    NSDateFormatter * dateFormatter=[[NSDateFormatter alloc]init];



Метод setDateStyle используется чтобы выбрать один из типов вывода даты

    [dateFormatter setDateStyle:NSDateFormatterShortStyle];
    NSLog(@"NSDateFormatterShortStyle %@",[dateFormatter stringFromDate:date]);

  [dateFormatter setDateStyle:NSDateFormatterNoStyle];
    NSLog(@"NSDateFormatterNoStyle %@",[dateFormatter stringFromDate:date]);

Можно задать свой формат даты:

[dateFormatter setDateFormat:@"yy/MM/dd EEEE HH:mm:SS a w"];

    [dateFormatter setDateFormat:@"yy/MM/dd HH:mm"];
    NSLog(@"my style: %@",[dateFormatter stringFromDate:date]);

Можно сформировать дату из строки:
    NSDate *date3=[dateFormatter dateFromString:@"08/05/17 15:37"];
    NSLog(@"my date: %@",date3);

Можно использовать календарь
    NSDate * d=[NSDate date];
   
    NSCalendar * calendar= [NSCalendar currentCalendar];
  //  NSDateComponents *component=[calendar component:NSCalendarUnitEra fromDate:d  ];
   // NSLog(@"%@",component);

 NSDate *date1=[NSDate date];
    NSDate *date2=[NSDate dateWithTimeIntervalSinceNow:-1000000];

    NSCalendar *calendar=[NSCalendar currentCalendar];
    NSDateComponents * components=
    [calendar components:NSCalendarUnitDay|NSCalendarUnitMinute fromDate:date1 toDate:date2 options:0];
    NSLog(@"%@",components);

Для создания таймера необходимо использовать:
       NSTimer* timer1= [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerTest:) userInfo:nil repeats:YES];


 и создать функцию таймера:

-(void) timerTest: (NSTimer*) timer{
   

    NSDateFormatter *dateFormater=[[NSDateFormatter alloc] init];
    [dateFormater setDateFormat:@"yy/MM/dd HH:mm:ss"];
    NSLog(@"%@",[dateFormater stringFromDate:[NSDate date  ]]);
 
   
}
}


Таймер так же необходимо правильно уничтожать, чтобы небыло утечки памяти:
  [timer invalidate];


Тестовый проект с уроком 16 Время и дата.



Домашнее задание к уроку 16 Время и дата.

Ученик.

1. Создайте класс студент у когторого будет проперти dateOfBirth (дата рождения), которая собственно NSDate.
2. Инициализируйте NSMutableArray и в цикле создайте 30 студентов.
3. Каждому установите дату рождения. Возраст рандомный от 16 до 50 лет.
4. В другом цикле пройдитесь по всему массиву и выведите день рождения каждого студента в адекватном формате.

Студент.

5. Отсортируйте массив студентов по дате рождения, начиная от самого юного.
6. Используя массивы имен и фамилий (по 5-10 имен и фамилий), каждому студенту установите случайное имя и случайную фамилию.
7. Выведите отсортированных студентов: Имя, Фамилия, год рождения

Мастер.

10. Создайте таймер в апп делегате, который отсчитывает один день за пол секунды.
11. Когда таймер доходит до дня рождения любого их студентов - поздравлять его с днем рождения.
12. Выведите на экран разницу в возрасте между самым молодым и самым старым студентом (количество лет, месяцев, недель и дней)

Супермен.

13. Выведите на экран день недели, для каждого первого дня каждого месяца в текущем году (от начала до конца)
14. Выведите дату (число и месяц) для каждого воскресенья в текущем году (от начала до конца)
15. Выведите количество рабочих дней для каждого месяца в текущем году (от начала до конца)

Выполнены все задания.

Проект домашнего задания к уроку 16 Дата.





Комментариев нет:

Отправить комментарий