Всем привет!
Люди, можете подсказать? Как используя C-шные функции (пошу на C) можно код написать, который по указанному году и месяцу определял бы количество дней в этом месяце? Я чё-то никак не соображу как это сделать. И вообще это возможно? И если не возможно, то хотябы как определить количество дней в текущем месяце? Набор функций в time.h прямо скажем не богатый, сижу мучаюсь, ничего придумать не могу.
Спасибо.
Здравствуйте, N_i_t_r_o, Вы писали:
N__>Всем привет! N__>Люди, можете подсказать? Как используя C-шные функции (пошу на C) можно код написать, который по указанному году и месяцу определял бы количество дней в этом месяце? Я чё-то никак не соображу как это сделать. И вообще это возможно? И если не возможно, то хотябы как определить количество дней в текущем месяце? Набор функций в time.h прямо скажем не богатый, сижу мучаюсь, ничего придумать не могу. N__>Спасибо.
Ну, например, вычесть из первого числа следующего месяца первое число этого. Или хранить в массиве. Или посмотреть в календаре. Или по косточкам пальцев. Вариантов много.
Здравствуйте, N_i_t_r_o, Вы писали:
N__>Как используя C-шные функции (пошу на C) можно код написать, который по указанному году и месяцу определял бы количество дней в этом месяце?
Примерно так
int getDays( int month, int year ) // months - 0 for january, ..., 11 for december
{
static const days[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int result = -1;
if( month < 0 || month > 11 )
return result;
result = days[ month ];
if( year % 4 == 0 && ( year % 100 != 0 || year % 400 == 0 ))
++result;
return result;
}
Re: Определение кол-ва дней в месяце... Как?
От:
Аноним
Дата:
12.07.07 09:21
Оценка:
Здравствуйте, N_i_t_r_o, Вы писали:
N__>Всем привет! N__>Люди, можете подсказать? Как используя C-шные функции (пошу на C) можно код написать, который по указанному году и месяцу определял бы количество дней в этом месяце? Я чё-то никак не соображу как это сделать. И вообще это возможно? И если не возможно, то хотябы как определить количество дней в текущем месяце? Набор функций в time.h прямо скажем не богатый, сижу мучаюсь, ничего придумать не могу. N__>Спасибо.
Здравствуйте, N_i_t_r_o, Вы писали:
N__>Всем привет! N__>Люди, можете подсказать? Как используя C-шные функции (пошу на C) можно код написать, который по указанному году и месяцу определял бы количество дней в этом месяце? Я чё-то никак не соображу как это сделать. И вообще это возможно? И если не возможно, то хотябы как определить количество дней в текущем месяце? Набор функций в time.h прямо скажем не богатый, сижу мучаюсь, ничего придумать не могу. N__>Спасибо.
Здравствуйте, Socrat, Вы писали:
S>Здравствуйте, N_i_t_r_o, Вы писали:
S>Ну, например, вычесть из первого числа следующего месяца первое число этого. Или хранить в массиве. Или посмотреть в календаре. Или по косточкам пальцев. Вариантов много.
Здравствуйте, N_i_t_r_o, Вы писали:
N__>Всем привет! N__>Люди, можете подсказать? Как используя C-шные функции (пошу на C) можно код написать, который по указанному году и месяцу определял бы количество дней в этом месяце? Я чё-то никак не соображу как это сделать. И вообще это возможно? И если не возможно, то хотябы как определить количество дней в текущем месяце? Набор функций в time.h прямо скажем не богатый, сижу мучаюсь, ничего придумать не могу. N__>Спасибо.
Здравствуйте, serge_levin, Вы писали:
S>>Ну, например, вычесть из первого числа следующего месяца первое число этого. Или хранить в массиве. Или посмотреть в календаре. Или по косточкам пальцев. Вариантов много.
_>Кстати, хороший способ
_>
Здравствуйте, serge_levin, Вы писали:
S>>Ну, например, вычесть из первого числа следующего месяца первое число этого. Или хранить в массиве. Или посмотреть в календаре. Или по косточкам пальцев. Вариантов много.
_>Кстати, хороший способ
_>
Да, я тут вспомнил про эту ветку и решил добавить еще метод: к первому числу искомого месяца добавляем 31 день и полученную дату (это будет уже следующий месяц) вычитаем из 32.
Здравствуйте, serge_levin, Вы писали:
_>Здравствуйте, N_i_t_r_o, Вы писали:
N__>>Как используя C-шные функции (пошу на C) можно код написать, который по указанному году и месяцу определял бы количество дней в этом месяце?
_>Примерно так _>
_>int getDays( int month, int year ) // months - 0 for january, ..., 11 for december
_>{
_> static const days[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
_> int result = -1;
_> if( month < 0 || month > 11 )
_> return result;
_> result = days[ month ];
_> if( year % 4 == 0 && ( year % 100 != 0 || year % 400 == 0 ))
_> ++result;
_> return result;
_>}
_>
Ну так код с ошибкой! Если год високосный получается что и в августе 32 дня! if (month == 1) забыл...
Не стыдно попасть в дерьмо, стыдно в нём остаться!
Здравствуйте, php-coder, Вы писали:
PC>Так можно же и подсократить Например:
PC>
PC>time_t sys_time = 0;
PC>struct tm *timeinfo1;
PC>struct tm timeinfo2;
PC>time(&sys_time);
PC>timeinfo1 = localtime(&sys_time);
PC>timeinfo1->tm_mon = month;
PC>timeinfo1->tm_mday = 1;
PC>timeinfo2 = timeinfo1; // инициализируем timeinfo2 всеми значениями timeinfo1
PC>timeinfo2.tm_mon++; // изменяем необходимые поля
PC>double i = difftime(mktime(&timeinfo2), mktime(timeinfo1))/3600;
PC>
Да, это конечно по меньше будет, но согласитесь, что вариант, предложенный Socrat-ом, был намного "лаконичнее" И, лично мое мнение, красивее, а главное — работал бы немного быстрее (хотя в данном случае затраты по времени не столь и велики)