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.
void OnStart()
{
//--- bieżąca data i czas
datetime nowTime = TimeCurrent();
Print("Teraz jest = ",TimeToString(nowTime));
}
Rys. 1. Przykład stosowania funkcji TimeCurrent().
#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().
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().