forked from airat77786/MQL5Book
92 lines
2.6 KiB
MQL5
92 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
| |||
| |||
//+------------------------------------------------------------------+
|