Научите пожалуйста работать с MqlDateTime

 

.day_of_year содержит некорректное значение. Локализовал в скрипте ситуацию с эксперта:

#property strict

datetime    timeCurr;
MqlDateTime timeCurrStruct;

void OnStart()
  {
   timeCurr = TimeCurrent();
   bool answer = TimeToStruct(timeCurr, timeCurrStruct);
   string temp = StringFormat("TimeToStruct answer: %s\n", answer == true ? "true" : "false");
   temp += StringFormat("Day of year: datetime %i, struct %i\n", TimeDayOfYear(timeCurr), timeCurrStruct.day_of_year);
   temp += StringFormat("Time: datetime: %s, struct %s", TimeToString(timeCurr), TimeToString(StructToTime(timeCurrStruct)));
   Comment(temp);
  }

Результат:

Результат строкой (кому слабо видно скриншот):

TimeToStruct answer: true
Day of year: datetime 165, struct 164
Time: datetime: 2022.06.14 01:08, struct 2022.06.14 01:08

Подскажите, пожалуйста, как это починить?

 
Vladislav Boyko:

.day_of_year содержит некорректное значение. Локализовал в скрипте ситуацию с эксперта:

Результат:

Результат строкой (кому слабо видно скриншот):

Подскажите, пожалуйста, как это починить?

вашу проблему выделил мышкой :

а 4-ный TimeDayOfYear вполне может возвращать, начиная с 1, то есть на один больше

---

выход довольно простой - не пользоваться устаревшими функциями. Если вам понадобился день года, то скорее там-же рядом нужен месяц, год - работайте со структурой. 

 
Maxim Kuznetsov #:

вашу проблему выделил мышкой :

а 4-ный TimeDayOfYear вполне может возвращать, начиная с 1, то есть на один больше

---

выход довольно простой - не пользоваться устаревшими функциями. Если вам понадобился день года, то скорее там-же рядом нужен месяц, год - работайте со структурой. 

Понял, спасибо большое