forked from rosh/MQL5Book
69 lines
2 KiB
MQL5
69 lines
2 KiB
MQL5
//+------------------------------------------------------------------+
| |
//| ConversionStruct.mq5 |
| |
//| Copyright 2021, MetaQuotes Ltd. |
| |
//| https://www.mql5.com |
| |
//+------------------------------------------------------------------+
| |
| |
//+------------------------------------------------------------------+
| |
//| Date and Time including milliseconds |
| |
//+------------------------------------------------------------------+
| |
struct DateTimeMsc
| |
{
| |
MqlDateTime mdt;
| |
int msc;
| |
DateTimeMsc() : msc(0)
| |
{
| |
ZeroMemory(mdt);
| |
}
| |
DateTimeMsc(MqlDateTime &init, int m = 0) : msc(m)
| |
{
| |
mdt = init;
| |
}
| |
};
| |
| |
//+------------------------------------------------------------------+
| |
//| Convert datetime to MqlDateTime |
| |
//+------------------------------------------------------------------+
| |
MqlDateTime TimeToStructInplace(datetime dt)
| |
{
| |
static MqlDateTime m;
| |
if(!TimeToStruct(dt, m))
| |
{
| |
static MqlDateTime z = {};
| |
return z;
| |
}
| |
return m;
| |
}
| |
| |
#define MDT(T) TimeToStructInplace(T)
| |
| |
//+------------------------------------------------------------------+
| |
//| Script program start function |
| |
//+------------------------------------------------------------------+
| |
void OnStart()
| |
{
| |
DateTimeMsc test(MDT(D'2021.01.01 10:10:15'), 123);
| |
uchar a[];
| |
Print(StructToCharArray(test, a));
| |
Print(ArraySize(a));
| |
ArrayPrint(a);
| |
/*
| |
outputs (array is reformatted):
| |
true
| |
36
| |
229 7 0 0
| |
1 0 0 0
| |
1 0 0 0
| |
10 0 0 0
| |
10 0 0 0
| |
15 0 0 0
| |
5 0 0 0
| |
0 0 0 0
| |
123 0 0 0
| |
*/
| |
| |
DateTimeMsc receiver;
| |
Print(CharArrayToStruct(receiver, a)); // true
| |
Print(StructToTime(receiver.mdt), "'", receiver.msc);
| |
}
| |
//+------------------------------------------------------------------+
|