93 lines
2.6 KiB
MQL5
93 lines
2.6 KiB
MQL5
|
//+------------------------------------------------------------------+
|
||
|
//| DateTime.mqh |
|
||
|
//| Copyright (c) 2019-2021, Marketeer |
|
||
|
//| https://www.mql5.com/en/users/marketeer |
|
||
|
//+------------------------------------------------------------------+
|
||
|
|
||
|
//+------------------------------------------------------------------+
|
||
|
//| Date and Time field extractor |
|
||
|
//+------------------------------------------------------------------+
|
||
|
class DateTime
|
||
|
{
|
||
|
private:
|
||
|
MqlDateTime mdtstruct;
|
||
|
datetime origin;
|
||
|
|
||
|
DateTime() : origin(0)
|
||
|
{
|
||
|
TimeToStruct(0, mdtstruct);
|
||
|
}
|
||
|
|
||
|
void convert(const datetime &dt)
|
||
|
{
|
||
|
if(origin != dt)
|
||
|
{
|
||
|
origin = dt;
|
||
|
TimeToStruct(dt, mdtstruct);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public:
|
||
|
static DateTime *assign(const datetime dt)
|
||
|
{
|
||
|
_DateTime.convert(dt);
|
||
|
return &_DateTime;
|
||
|
}
|
||
|
ENUM_DAY_OF_WEEK timeDayOfWeek() const
|
||
|
{
|
||
|
return (ENUM_DAY_OF_WEEK)mdtstruct.day_of_week;
|
||
|
}
|
||
|
int timeDayOfYear() const
|
||
|
{
|
||
|
return mdtstruct.day_of_year;
|
||
|
}
|
||
|
int timeYear() const
|
||
|
{
|
||
|
return mdtstruct.year;
|
||
|
}
|
||
|
int timeMonth() const
|
||
|
{
|
||
|
return mdtstruct.mon;
|
||
|
}
|
||
|
int timeDay() const
|
||
|
{
|
||
|
return mdtstruct.day;
|
||
|
}
|
||
|
int timeHour() const
|
||
|
{
|
||
|
return mdtstruct.hour;
|
||
|
}
|
||
|
int timeMinute() const
|
||
|
{
|
||
|
return mdtstruct.min;
|
||
|
}
|
||
|
int timeSeconds() const
|
||
|
{
|
||
|
return mdtstruct.sec;
|
||
|
}
|
||
|
|
||
|
static DateTime _DateTime;
|
||
|
};
|
||
|
|
||
|
static DateTime DateTime::_DateTime;
|
||
|
|
||
|
#define TimeDayOfWeek(T) DateTime::assign(T).timeDayOfWeek()
|
||
|
#define TimeDayOfYear(T) DateTime::assign(T).timeDayOfYear()
|
||
|
#define TimeYear(T) DateTime::assign(T).timeYear()
|
||
|
#define TimeMonth(T) DateTime::assign(T).timeMonth()
|
||
|
#define TimeDay(T) DateTime::assign(T).timeDay()
|
||
|
#define TimeHour(T) DateTime::assign(T).timeHour()
|
||
|
#define TimeMinute(T) DateTime::assign(T).timeMinute()
|
||
|
#define TimeSeconds(T) DateTime::assign(T).timeSeconds()
|
||
|
|
||
|
#define _TimeDayOfWeek DateTime::_DateTime.timeDayOfWeek
|
||
|
#define _TimeDayOfYear DateTime::_DateTime.timeDayOfYear
|
||
|
#define _TimeYear DateTime::_DateTime.timeYear
|
||
|
#define _TimeMonth DateTime::_DateTime.timeMonth
|
||
|
#define _TimeDay DateTime::_DateTime.timeDay
|
||
|
#define _TimeHour DateTime::_DateTime.timeHour
|
||
|
#define _TimeMinute DateTime::_DateTime.timeMinute
|
||
|
#define _TimeSeconds DateTime::_DateTime.timeSeconds
|
||
|
|
||
|
//+------------------------------------------------------------------+
|