Уменьшение времени на заданное количество - страница 3

 
Viktar Dzemikhau:

В принципе логично. А я лёгких путей не искал, и уже изобрёл велосипед...)

О как!

Сам класс прикрепляю.

Удобство в том, что на момент принятия решения может понадобится, как я выше написал, отнять не количество секунд, а количество минут, дней, недель и тд.

Но, чтобы его написать, мне пришлось внимательно продумать как это будет выглядеть. Влом переписывать такие вещи по несколько раз. Как-нить, можно будет добавить ещё и операцию add()

Я почему-то ни разу не пробовал почесать левое ухо мизинцем правой ноги.

Существует ещё 

ENUM_TIMEFRAMES

и

int  PeriodSeconds( 
   ENUM_TIMEFRAMES  period=PERIOD_CURRENT      // период графика 
   );

Так вот если надо отнять одну неделю и один час, то это будет выглядетьтак:

time - (PeriodSeconds(PERIOD_W1)+PeriodSeconds(PERIOD_H1))

и не надо напрягать мозг чтобы всё это переводить в секунды перемножением на 60.


Добавлено: А вообще, только попытка что-то сделать не спрашивая и не прося поделиться кодом заслуживает уважения. А если эти попытки привели к какому-то положительному результату это уже уважение вдвойне. Рад за вас… Только не ленитесь переписать если впоследствии, что-то получилось лучше чем было «изобретено»

 
Alexey Viktorov:

и не надо напрягать мозг чтобы всё это переводить в секунды перемножением на 60.

Согласен. Так гораздо красивее..)


Alexey Viktorov:

Добавлено: А вообще, только попытка что-то сделать не спрашивая и не прося поделиться кодом заслуживает уважения. А если эти попытки привели к какому-то положительному результату это уже уважение вдвойне. Рад за вас…

Всё-таки, пришлось это сделать. К тому же, остался один момент. А так всё вышло красиво, и, в случае, когда нужно будет использовать на datetime обычный, это класс мне пригодится. Хотя.. теперь я буду пользоваться функцией PeriodSeconds(). Это удобнее, чем калькулятором высчитывать количество секунд.


Alexey Viktorov:

Только не ленитесь переписать если впоследствии, что-то получилось лучше чем было «изобретено»

Нет, конечно. В данном случае, переписать нужно.  По крайне мере, тот момент, где забиты цифрами количество секунд в различных таймфреймах.

 
Koldun Zloy:

Это больше похоже на массив.

Только в массиве все элементы должны быть одного типа, а в структуре могут быть разных типов.

По-научному называется кортеж. Физически реализуется в виде массива строк с выравниванием в случае нечётного количества байтов элемента. Другого способа реализации я не знаю. 

 
Алексей Тарабанов:

По-научному называется кортеж. Физически реализуется в виде массива строк с выравниванием в случае нечётного количества байтов элемента. Другого способа реализации я не знаю. 

Допустим есть такая структура:

struct RGB
{
   double R;
   double G;
   double B;
};

Создаём переменную:

RGB a;

Вы считаете что при такой операции

a.R = 0.45;

происходит преобразование из double в строку.

А при такой

double r = a.R;

преобразование из строки в double.

Я правильно Вас понял?

 
Alexey Viktorov #:

Я почему-то ни разу не пробовал почесать левое ухо мизинцем правой ноги.

иногда приходится...  и лучше вашего варианта я не нашла пока (для поиска Понедельника любой текущей недели)

         MqlDateTime st;
         TimeToStruct(src[i]._TMstart,st);
         datetime newTime;

    /*     if (st.day_of_week>1) {
            newTime = (src[i]._TMstart-PeriodSeconds(PERIOD_D1)*(st.day_of_week-1));
         }
    */
        newTime = (st.day_of_week>1) ? ((src[i]._TMstart-PeriodSeconds(PERIOD_D1)*(st.day_of_week-1))) : src[i]._TMstart ;

Благодарю! пусть будет так пока... (если не появится вариант лучше?)

p.s.

хоть бы такой понедельник ещё и не стал праздником (не рабочим днём на рынке) или дырой в истории (

 
JeeyCi #:

иногда приходится...  и лучше вашего варианта я не нашла пока (для поиска Понедельника любой текущей недели)

Благодарю! пусть будет так пока... (если не появится вариант лучше?)

TimeToStruct для вычисления дня недели - не быстрый вариант.

 
fxsaber #:

TimeToStruct для вычисления дня недели - не быстрый вариант.

а что быстрее ?

p.s.

кстати прибавлять/отнимать дни, недели, месяцы, годы в структуре, наверно, проще... time.mon++;  time.year++; etc

 
JeeyCi #:

а что быстрее ?

p.s.

кстати прибавлять/отнимать дни, недели, месяцы, годы в структуре, наверно, проще... time.mon++;  time.year++; etc

uchar DayOfWeek(datetime t){
 return (uchar)((t/86400+4)%7);
}
 
  Nikolai Semko  Спасибо!