Мне нужно найти будний день с указанной даты; У меня есть следующий код, но он не работает
int day;
char *str ="25/02/2014";
struct tm tm;
if (strptime(str, "%d/%m/%Y", &tm) != NULL)
{
time_t t = mktime(&tm);
day = localtime(&t)->tm_wday;
return day;
}
Что я здесь делаю неправильно?
Вы должны взять struct tm tm;
вместо struct tm * tm;
вам нужно инициализировать tm
, используя memset(&tm,0x00,sizeof(tm));
иначе mktime
вернет -1
memset(&tm, 0, sizeof tm)
, не лучше isdst
поле isdst
установить значение -1, чем оставить в 0? (Я полагаю, что это мало что меняет, хотя изменения летнего времени в полночь (ч: м: с == 0:00:00) встречаются редко.)
Результат 4
на дату 27/02/2014 верен, см. time.h
Описание
...
int tm_wday День недели [0,6] (воскресенье = 0).
Воскресенье 0, понедельник = 1, вторник = 2, среда = 3 и четверг = 4,...
struct tm *tm;
поstruct tm tm;