Можно ли как-то узнать количество дней в месяце средствами MQL?

 

Привет. Есть желание менять поведение эксперта в два последних дня месяца. Конечно, можно применять логику к 30 и 31 числу, и в большинстве случаев это будет работать. Но, сами понимаете, хотелось бы чего-то красивее. Обычно везде есть функции типа DaysInMonth(), в справке не нашёл ничего подобного. Задача вроде должна быть распространённой, как в народе такое решается?

Благодарю за помощь.

 
Так оно и так известно. В зависимости от високосности и номера месяца доставать из массива. Потребуется 2 массива с високосными числами и невисокосными числами.
 

0. Ложим на советы предыдущего оратора.

1. Берем 1 числа текущего месяца.

2. прибавляем 31 день.

3. Берем 1 числа следующего месяца

4. сравниваем 1 и 3

 
TheXpert:

0. Ложим на советы предыдущего оратора.

Извините, но - "кладём".
 
Зачем вычислять то, что уже известно? Для этого массивы есть. Это проще, наглядно. Отсутствие вычислений это отсутствие ошибок и отладки кода. Не говорю, что это существенно более быстрые операции.
 

Я бы взял первое число следующего месяца и отнял (вычел) два дня

 
alex_ant:

Привет. Есть желание менять поведение эксперта в два последних дня месяца. Конечно, можно применять логику к 30 и 31 числу, и в большинстве случаев это будет работать. Но, сами понимаете, хотелось бы чего-то красивее. Обычно везде есть функции типа DaysInMonth(), в справке не нашёл ничего подобного. Задача вроде должна быть распространённой, как в народе такое решается?

Благодарю за помощь.


А если один из этих дней или даже оба последних дня являются выходными?
 
int dim(int m,int y){ // m - месяц от 1 до 12, y - год
   int d=30+(m+(m>7))%2-(m==2)*(1+((y%4)!=0));
   return(d);
}

исправлено
 
Integer:

В этом коде точно нет ошибок?
 
PapaYozh:

В этом коде точно нет ошибок?

В каких-то случаях неправильно считает?
 
Одна ошибка точно есть. Неправильно високосность вычисляется.
Причина обращения: