Прототип функции mktime:
time_t mktime( struct tm * ptrtime );
Заголовочный файл
| Название | Язык |
|---|---|
| time.h | С |
| ctime | С++ |
Описание
Интерпретирует содержимое структуры tm, передаваемой в функцию в качестве аргумента через указатель на ptrtime в формат местного времени. Данная функция по некоторым исходным значениям времени восстанавливает значения остальных членов ptrtime, соответственно.
Исходные значения членов структуры tm_wday и tm_yday из ptrtime игнорируются. Диапазоны значений для остальных членов структуры ограничиваются их нормальными значениями (например, диапазон значений tm_mday находится между 1 и 31).
Объект, на который указывает ptrtime изменяется, а именно — инициализируются переменные-члены tm_wday и tm_yday, и изменяются значения других переменных-членов в пределах нормы, в соответствии с указанным временем.
Параметры:
- ptrtime
Указатель на временную структуруtm, которая содержит календарное время распределенное по соответствующим переменным.
Возвращаемое значение
Значение типа time_t, соответствующее календарному времени, которое передается в функцию в качестве аргумента.
В случае ошибки функция возвращает значение -1.
Пример: исходный код программы
//пример использования функции mktime: определить день недели
#include <iostream>
#include <ctime>
int main ()
{
time_t rawtime; // тип данных для хранения количества секунд
struct tm * timeinfo; // структура даты и времени
int year, month ,day;
char * weekday[] = { "Воскресенье", "Понедельник",
"Вторник", "Среда",
"Четверг", "Пятница", "Суббота"};
//Ввод даты
std::cout << "Введите год: "; std::cin >> year;
std::cout << "Введите месяц: "; std::cin >> month;
std::cout << "Введите день: "; std::cin >> day;
// получить текущую информацию о дате и изменить её относительно введенной
time( &rawtime ); // текущая дата в секундах
timeinfo = localtime( &rawtime ); // преобразовние текущей даты из секунд к нормальному виду
timeinfo->tm_year = year - 1900; // корректируем год
timeinfo->tm_mon = month - 1; // корректируем значение месяца
timeinfo->tm_mday = day; // введённый день
mktime( timeinfo ); // определить день недели
std::cout << "День недели: " << weekday[timeinfo->tm_wday] << std::endl;
return 0;
}
Пример работы программы
Введите месяц: 10
Введите день: 10
День недели: Среда