Как перевести дату yyyy.mm.dd hh:ii:ss в секунды

 
Vasily Pererva:

День добрый!

Кто сталкивался, подскажите пожалуйста, как перевести в MQL4 дату и время yyyy.mm.dd hh:ii:ss в секунды и обратно в дату и время?


StringToTime() и TimeToString() соответственно.
 

Тип datetime предназначен для хранения даты и времени в виде количества секунд, прошедших с 01 января 1970 года.

Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип datetime
Документация по MQL5: Основы языка / Типы данных / Целые типы / Тип datetime
  • www.mql5.com
Основы языка / Типы данных / Целые типы / Тип datetime - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Ihor Herasko:

StringToTime() и TimeToString() соответственно.
В данном случае это будет лишним. Достаточно написать (string)time (должен быть #property strict).
 
Ihor Herasko:

StringToTime() и TimeToString() соответственно.

Примного благодарен!
 

Такой вопрос, почему функция возвращает 0? не пойму в чем ошибка...


string _PassedTime(datetime dt1, datetime dt2)

{

int t1=(int)StringToTime(dt1);

int t2=(int)StringToTime(dt2);


int total = 0;

if(t2 > t1)

   total=t2-t1;

else

   total=t1-t2;


return (string)total;

}

    Comment("Test = "+(string)_PassedTime(D'2016.04.01 10:22:09', D'2016.04.01 10:23:09'));

 
Vasily Pererva:

Такой вопрос, почему функция возвращает 0? не пойму в чем ошибка...

Читайте мой первый ответ.
int _PassedTime(datetime dt1, datetime dt2)

{
  return((int)(dt2 > dt1 ? dt2 - dt1 : dt1 - dt2));
}
 
fxsaber:
Читайте мой первый ответ.

Спасибо большое! Респект тебе!
 
fxsaber:
В данном случае это будет лишним. Достаточно написать (string)time (должен быть #property strict).

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

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

Только такой вариант помог увидеть секунды, даже без #property strict в mql4

Print((int)TimeCurrent(), " *** ", TimeCurrent());

// результат
// 2017.04.21 09:31:50.324      00 (EURUSD,M30) 1492767112 *** 2017.04.21 09:31:52
 
Alexey Viktorov:

Я так давно не распечатывал время...

void OnStart()
{
  const int Seconds = __DATETIME__;
  
  Print(Seconds);
  Print((datetime)Seconds);
  Print("time = " + (string)Seconds);
  Print("time = " + (string)(datetime)Seconds);
}
Результат
1492768239
2017.04.21 09:50:39
time = 1492768239
time = 2017.04.21 09:50:39
 
Alexey Viktorov:

.......

Я в шоке... В любом варианте печатает в виде строки. 

......


Функция Print() сама приводит переданные ей аргументы к типу string, если не указывать явное приведение типов.