Funkcje daty i czasu:   TimeCurrent()

Funkcja datetime TimeCurrent() zwraca ostatni znany czas serwera (nie lokalny czas komputera). W przypadku funkcji przetwarzania zdarzeń, np. OnTick() lub OnStart(), funkcja ta zwróci czas przyjścia ostatniego tick-a instrumentu finansowego z tego wykresu notowań, gdzie program MQL4 został uruchomiony. W przypadku funkcji zdarzeniowych takich jak OnInit(), OnDeinit(), OnTimer() i innych, będzie to czas przyjścia ostatniego notowania dla dowolnego instrumentu finansowego obecnego w oknie "Market Watch". Więcej informacji można znaleźć w specyfikacji MQL4.


Przykład 1

void OnStart()
  {
//--- bieżąca data i czas
   datetime nowTime = TimeCurrent();
   Print("Teraz jest = ",TimeToString(nowTime));
  }

Rys. 1. Przykład stosowania funkcji TimeCurrent().


Przykład 2

#property strict
void OnStart()
  {
//--- data i czas
   string   someTime   = "2010.01.01 12:00";
//--- konwersja wartości typu string do datetime
   datetime resultTime = StringToTime(someTime);

//--- sprawdzenie czy data i czas znajduje się w przyszłości
   if(resultTime > TimeCurrent())
     {
      Print("Wybrany czas ",someTime,
            " znajduje się w przyszłości. Teraz jest ",
            TimeToString(TimeCurrent()) );
      return;
     }
//--- sprawdzenie czy data i czas znajduje się w przeszłości
   if(resultTime < TimeCurrent())
     {
      Print("Wybrany czas ",someTime,
            " znajduje się w przeszłości. Teraz jest ",
            TimeToString(TimeCurrent()) );
      return;
     }
//--- sprawdzenie czy data i czas jest teraz
   if(resultTime == TimeCurrent())
     {
      Print("Wybrany czas ",someTime,
            " jest teraz. Teraz jest ",
            TimeToString(TimeCurrent()) );
      return;
     }
  }

Rys. 2. Przykład stosowania funkcji TimeCurrent().


Przykład 3

Jeśli w nagłówku funkcji zapisać strukturę typu MqlDateTime , to zostanie ona wypełniona w odpowiedni sposób.

#property strict
void OnStart()
  {
//--- utworzenie struktury structDate typu MqlDateTime
   MqlDateTime structDate;
//--- przypisanie strukturze structDate bieżącego czasu
   TimeCurrent(structDate);

//--- kopiowanie danych ze struktury do zmiennych
   int structYear      = structDate.year;        // rok
   int structMonth     = structDate.mon;         // miesiąc
   int structDay       = structDate.day;         // dzień
   int structHours     = structDate.hour;        // godziny
   int structMinutes   = structDate.min;         // minuty
   int structSeconds   = structDate.sec;         // sekundy
   int structDayOfWeek = structDate.day_of_week; /* dzień tygodnia
                                                  0-nd, 1-pn, 2-wt
                                                  3-śr, 4-czw, 5-pt, 6-sob */

   int structDayOfYear = structDate.day_of_year; // dzień roku

//--- wyświetlić wynik
   Print("1) rok = ",structYear);
   Print("2) miesiąc = ",structMonth);
   Print("3) dzień = ",structDay);
   Print("4) godziny = ",structHours);
   Print("5) minuty = ",structMinutes);
   Print("6) sekundy = ",structSeconds);
   Print("7) dzień tygodnia = ",structDayOfWeek);
   Print("8) dzień roku = ",structDayOfYear);
  }

Rys. 3. Przykład stosowania funkcji TimeCurrent().