mktime()

#include <time.h>
time_t mktime(struct tm *time);

Описание

Возвращает эквивалент календарного времени на основе времени, заданного в поэлементном виде и хранимого в структуре, которая адресуется параметром time

Функция mktime() возвращает эквивалент календарного времени на основе времени, заданного в поэлементном виде и хранимого в структуре, которая адресуется параметром time.

Элементы tm_wday и tm_yday устанавливаются самой функцией, поэтому их не нужно определять при ее вызове.

Если функция mktime() не в состоянии представить информацию в виде допустимого календарного времени, возвращается значение -1.


Совет программисту

Функция mktime() особенно полезна, когда нужно узнать, на какой день недели выпадает конкретная дата. Например, каким днем недели будет 12 января 2012 года? Чтобы выяснить это, вызовите функцию mktime() с этой датой, а затем(после выполнения функции) обратитесь к члену tm_wday структуры tm. Он будет содержать день недели. Этот метод демонстрируется следующей программой.

Копировать
/* Определение дня недели для даты "12 января 2012 года" (January 12, 2012). */
#include <stdio.h>
#include <time.h>
char day[][20] = {
	"Sunday",
	"Monday",
	"Tuesday",
	"Wednesday",
	"Thursday",
	"Friday",
	"Saturday"
};

int main(void)
{
	struct tm t;

	t.tm_mday = 12;
	t.tm_mon = 0;
	t.tm_year = 112;
	t.tm_hour = 0;
	t.tm_min = 0;
	t.tm_sec = 0;
	t.tm_isdst = 0;
	
	mktime(&t);	//получаем день недели
	
	printf("день недели %s.\n", day[t.tm_wday]);

	return 0,
}

При выполнении этой программы функция mktime() автоматически вычисляет день недели, которым в данном случае является вторник(Thursday). Поскольку значение, возвращаемое функцией mktime(), не используетсяоно попросту игнорируется.