День недели с указанной даты

0

Мне нужно найти будний день с указанной даты; У меня есть следующий код, но он не работает

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;
}

Что я здесь делаю неправильно?

  • 0
    Это похожий вопрос stackoverflow.com/questions/5797814/…
  • 0
    Это компилируется? Здесь это не так, если вы не замените struct tm *tm; по struct tm tm;
Показать ещё 7 комментариев
Теги:
datetime

2 ответа

2

Вы должны взять struct tm tm; вместо struct tm * tm;

вам нужно инициализировать tm, используя memset(&tm,0x00,sizeof(tm)); иначе mktime вернет -1

  • 0
    С memset(&tm, 0, sizeof tm) , не лучше isdst поле isdst установить значение -1, чем оставить в 0? (Я полагаю, что это мало что меняет, хотя изменения летнего времени в полночь (ч: м: с == 0:00:00) встречаются редко.)
0

Результат 4 на дату 27/02/2014 верен, см. time.h

Описание
...
int tm_wday День недели [0,6] (воскресенье = 0).

Воскресенье 0, понедельник = 1, вторник = 2, среда = 3 и четверг = 4,...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню