Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Функції роботи з датою та часомСодержание книги
Поиск на нашем сайте При розробці програмного забезпечення виникає необхідність роботи з датою та часом. Під датою будемо розуміти рік, місяць, день місяця. Під часом – години, хвилини, секунди та мілісекунди. У програмуванні виникають такі основні задачі роботи з датою, як отримання поточної дати та часу, арифметичні операції з датою та часом, використовуючи структури роботи з датою. Для роботи з датою та часом до головної програми необхідно включити хайдер <time.h>. Для розширеної роботи з функціями часу, а саме робота з мілісекундами, необхідно підключити хайдер <sys\timeb.h>. Головна структура роботи з датою та часом – це структура tm.
Struct tm { int tm_sec; /* Секунди */ int tm_min; /* Хвилини */ int tm_hour; /* Години (0--23) */ int tm_mday; /* День місяця (1--31) */ int tm_mon; /* Місяць (0--11) */ int tm_year; /* Рік (календарний рік мінус 1900) */ int tm_wday; /* День тижня (0--6; Неділя = 0) */ int tm_yday; /* День року (0--365) */ int tm_isdst; /* відмінний від 0, якщо світло денне */ };
Елементи цієї структури можна проініціалізувати самостійно, або заповнити її поточною датою та часом, що приведено в наступному прикладі.
# include <iostream.h> # include <string.h> # include <stdio.h> # include <time.h> //time # include <sys\timeb.h> // timeb
Void main() { char str[50]; time_t time1; struct tm *tm1; time(&time1); // time1 кількість секунд з 1970 р. printf("%ld second\n",time1); tm1 = localtime(&time1); printf("%d year\n",tm1->tm_year); printf("%d hour\n",tm1->tm_hour); printf("%d minutes\n",tm1->tm_min); printf("%d sec\n",tm1->tm_sec);
strcpy(str, asctime(tm1)); printf("%s\n", str); }
У даному прикладі оголошується змінна t1 типу time_t, що є еквівалентним типу даних long. Функція time(), у яку передається вказівка на структуру tm1 (тип tm), повертає кількість секунд, починаючи з 1970-го року. Функція localtime() – генерує з цієї кількості секунд структуру tm1. Cкажімо, якщо поточна дата – 24 січня 2008 року, а час 14.35.15, тоді буде мати місце наступний результат:
1201203428 second 108 year 14 hour 35 minutes 15 sec
Зауважимо, що рік розраховується відносно 1900 року, тому змінна year структури tm1 дорівнюватиме 108. Якщо необхідно отримати дату з часом у якості рядку (масиву символів char) треба використати функцію asctime(), входом у яку є структура типу tm. Для отримання рядку з датою або з часом використовують функції, відповідно char *_strdate(char*s1), char *_strtime(char*s1). У наступному прикладі виводиться поточна дата та час.
# include <iostream.h> # include <stdlib.h> # include <stdio.h> # include <time.h> //time # include <sys\timeb.h> // timeb
Void main() { char buf[15]; _strdate(buf); cout<<"date "<<buf<<"\n"; _strtime(buf); cout<<"time "<<buf<<"\n"; }
Існують моменти, коли треба деталізувати, включаючи мілісекунди. Особливо це важливо, коли треба перевіряти ефективність за часом тих або інших операцій. З цією метою використовується структура timeb.
Struct timeb { long time; //кількість секунд починаючи з 1970 року short millitm; // кількість мілісекунд short _timezone; // відмінність у хвилинах за Грінвічем та місцевим часом short dstflag; // відмінний від 0, якщо світло денне };
Нижче приведемо приклад аналізу, який показує скільки часу треба на те, щоб пройшов порожній цикл з 100000000 ітерацій. Даний приклад є дуже корисним для аналізу швидкодії алгоритмів, різноманітних технологій тощо.
# include <iostream.h> # include <stdlib.h> # include <stdio.h> # include <time.h> //time # include <sys\timeb.h> // timeb
Void main() { struct timeb timebuffer;
ftime(&timebuffer); double nach = timebuffer.time+timebuffer.millitm/1000.0;
for(long i=1;i<100000000;i++);
ftime(&timebuffer); double conec = timebuffer.time+timebuffer.millitm/1000.0;
printf("Kol-vo1 %f sec\n",conec - nach);
}
Функція ftime() у даному прикладі заповнює структуру timebuffer типу timeb. Потім у змінну nach записуємо кількість секунд з 1970 року з врахуванням мілісекунд, та зчитуємо відповідну кількість секунд після циклу в 100000000 ітерацій в змінну conec. Різниця цих змінних і дасть нам кількість секунд на експериментальну операцію з урахуванням мілісекунд. Якщо необхідно провести різноманітні операції з датами: віднімання дат, додавання певної кількості днів і т.і., треба перевести дати в секунди відносно 1970 року. Для цього призначена функція mktime. Її синтаксис наступний.
time_t mktime(struct tm *t);
Для зворотного переведення секунд до структури tm використовується функція localtime() з наступним синтаксисом:
struct tm *localtime(const time_t *timer);
ТЕМА 7: МАСИВИ ПЛАН 1. Одномірні масиви, їхня ініціалізація. 2. Сортування масивів. 3. Розміщення одномірного масиву в пам’яті. 4. Багатомірні масиви і їхнє розміщення в пам’яті.
|
||
|
Последнее изменение этой страницы: 2017-02-10; просмотров: 317; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.217.128 (0.009 с.) |