операции с датами: к дню прибавить 24 часа

 

Всем привет !

запутался в датах )

как устанвить значение типа даты ранвое 20 ч следующего дня ?

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

 
Worh:

Всем привет !

запутался в датах )

как устанвить значение типа даты ранвое 20 ч следующего дня ?

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

Не проверял

datetime time;
bool to=false;
//+------------------------------------------------------------------+
if(!to)
  {
   time=iTime(Symbol(),PERIOD_D1,0)+(PERIOD_D1*60)+(20*3600);
   to=true;
  }
//+-------------------- время настало -------------------------------+
if(TimeCurrent()>=time)
  {
//---
   to=false;
  }
//+------------------------------------------------------------------+
 
Worh:

Всем привет !

запутался в датах )

как устанвить значение типа даты ранвое 20 ч следующего дня ?

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

Получить текущее время, прибавить 24 часа, затем это время перевести в структуру TimeToStruct и там изменить время на 20 часов 00 минут.

Можно сразу текущую дату перевести в структуру, проверить какой сегодня день, выставить следующий день, время и всё. Конвертировать обратно в формат datetime.

 

Worh:   как устанвить значение типа даты ранвое 20 ч следующего дня ?

  datetime dt=TimeLocal();
  datetime t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 20:00")+24*60*60;
  Alert("Сейчас = ",dt, "   Завтра в 20:00 = ",t1);

так пишут программисты практики, учившие язык методом проб. Теоретики используют структуры

 
STARIJ:

так пишут программисты практики, учившие язык методом проб.

такая же история)

 
STARIJ:

  datetime dt=TimeLocal();
  datetime t1=StrToTime(TimeToStr(dt, TIME_DATE)+" 20:00")+24*60*60;
  Alert("Сейчас = ",dt, "   Завтра в 20:00 = ",t1);

так пишут программисты практики, учившие язык методом проб. Теоретики используют структуры

Практик, что то не вижу у вас в профиле работ. Данный форум создан для помощи обмена знаниями общения, а не выпендрежа, что предыдущий ответ теоретика. Редактор не открывал так на вскидку идею дал человеку, можешь предложить лучше пожалуйста.

 
Alexey Valeev:

Практик, что то не вижу у вас в профиле работ. Данный форум создан для помощи обмена знаниями общения, а не выпендрежа, что предыдущий ответ теоретика. Редактор не открывал так на вскидку идею дал человеку, можешь предложить лучше пожалуйста.

Код предложили оба  в отличии от Вас.И где выпендрёшь?Вам скучно?Человек "запутался в датах )"-а Вы ему про структуры...)

 
Nikolay Gaylis:

Код предложили оба  в отличии от Вас.И где выпендрёшь?Вам скучно?Человек "запутался в датах )"-а Вы ему про структуры...)

Я дал идею как получить завтрашний день используя структуру даты и времени. Можно и без структур, но я редактор не открывал, а не проверенный код предлагать написанный вслепую не стал.
 
я бы так оформил
      MqlRates rates[];
      CopyRates(Symbol(),PERIOD_D1,0,1,rates);
      datetime time=rates[0].time+(20*3600+24*3600);

или так что бы меньше заморочек было с направлением массива rates

      MqlRates rates[];
      CopyRates(Symbol(),PERIOD_D1,0,1,rates);
      ArraySetAsSeries(rates,true);
      datetime time=rates[0].time+(20*3600+24*3600);

здесь открытие сегодняшнего дня всегда будет в rates[0].time+20 твоих часов + 24 что бы другой день был

 

datetime time=iTime(NULL,PERIOD_D1,0)+(20+24)*3600;   Но будет ли это работать в воскресенье?       в MQL-4 можно без CopyRates()

 
STARIJ:

datetime time=iTime(NULL,PERIOD_D1,0)+(20+24)*3600;   Но будет ли это работать в воскресенье?       в MQL-4 можно без CopyRates()

действительно сделал по вашему предложению, и дял всоресенье добавил условие (пятинца проходит мимо) 

 dateTradeLast = iTime(nameSym,PERIOD_D1,0)+(20+24)*3600;
 if (DayOfWeek() == 4) dateTradeLast =  dateTradeLast + (20+48)*3600;


но стаивтся понедельник не 20 ч а почему-то 16 ч ? можно коненчо добавить необходимые 4 часа, но просто интресно почему так ?

Причина обращения: