Скачать MetaTrader 5

Как можно складывать и отнимать время???

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Deft
102
Deft  
Допустим у меня есть переменная тип DataTime = '2003.8.12 17:35'
как мне к ней прибавить/отнять 5(15) минут(секунд, часов, дней)???

чтобы получить '2003.8.12 17:40' (прибавить 5 минут) и т.д.
Rashid Umarov
Админ
11993
Rashid Umarov  
datetime хранит время в секундах после 1970 года. Соответственно, прибавляйте нужно количество секунд.
curTime+5*60 (секунд) = поличим время на 5 минут больше , чем curTime
Phot
9
Phot  
Rosh:
datetime хранит время в секундах после 1970 года. Соответственно, прибавляйте нужно количество секунд.
curTime+5*60 (секунд) = поличим время на 5 минут больше , чем curTime
Можно ли из переменной типа datetime вычитать переменную типа int?
Vitalie Postolache
12271
Vitalie Postolache  
Phot:
Можно ли из переменной типа datetime вычитать переменную типа int?
Лучше переменную объявлять тоже datetime, или приводить к этому типу после вычисления её  значения, чтобы предупреждений лишних не было.
Vasyl Nosal
18656
Vasyl Nosal  

А есть стандартная функция преобразования секунд в мин/часы и т .д?

Типа чтобы было если 40 секунд то только возвращало 40, если 70 то 1:10

... 

Slava
Модератор
6918
Slava  
eevviill:

А есть стандартная функция преобразования секунд в мин/часы и т .д?

Типа чтобы было если 40 секунд то только возвращало 40, если 70 то 1:10

... 

Да, есть. TimeToString. Только дата будет "1970.01.01"
Vasyl Nosal
18656
Vasyl Nosal  
stringo:
Да, есть. TimeToString. Только дата будет "1970.01.01"

Не. Она 70 секунд не сделает 1:10 (1мин 10 сек)

А была бы очень полезная функция. 

Ihor Herasko
9306
Ihor Herasko  
eevviill:

Не. Она 70 секунд не сделает 1:10 (1мин 10 сек)

А была бы очень полезная функция. 

Это достаточно просто делается собственными силами:

string LeadZero(int iValue)
{
   if (iValue > 9)
      return IntegerToString(iValue);

   return "0" + IntegerToString(iValue);
}

string SecondsToMinSec(int iSeconds)
{
   int min = iSeconds / 60;
   int sec = iSeconds % 60;
   retrun LeadZero(min) + ":" + LeadZero(sec);
}

Для формата HH:ММ:SS можно использовать и TimeToString:

 Alert(TimeToString(70, TIME_SECONDS)); 
Slava
Модератор
6918
Slava  

Вот пример скрипта вывода нужной Вам информации двумя способами

void OnStart()
  {
   string str_time=TimeToString(70,TIME_SECONDS);
   Print("str_time=",str_time);
//---
   MqlDateTime stime;
   TimeToStruct(70,stime);
   Print(stime.min,":",stime.sec);
  }

Вот его вывод

2015.07.27 12:45:08.594 TimeToString USDCHF,H1: str_time=00:01:10
2015.07.27 12:45:08.594 TimeToString USDCHF,H1: 1:10

Берите любой

Vasyl Nosal
18656
Vasyl Nosal  
Scriptong:

Это достаточно просто делается собственными силами:

Для формата HH:ММ:SS можно использовать и TimeToString:

 

 

Я имел ввиду без часов например, но в формате если 70сек то 1:10 если 50сек то 50

Тоесть если 0 то не показывать информацию. 

Vasyl Nosal
18656
Vasyl Nosal  
stringo:

Вот пример скрипта вывода нужной Вам информации двумя способами

Вот его вывод

Берите любой

Спасибо, но можно ли чтобы вывод как в структуре был без неё?

 1:10

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий