MQL4 документация объявлена datetime
типа, чтобы быть внутренне представлена в виде количества секунд, прошедших с согласованной шкалы времени нулевой точки (будучи 1970-01-01 00:00
).
Это говорит (и полирования чуток синтаксис соответствия)
код
может читать
oneYear = 60 * 60 * 24 * 365; // yes, astronomers would kill me
// for not solving those seconds,
// that sum up until a leap year
// consumes 'em on Feb-29th day :o)
другой вариант
так, чтобы манипулировать
datetime
в немного более
комфортабельной способ, адресация
datetime
's natural component is hac ка, но стоит: StringToTime
string TimeToString(datetime aDatetimeVALUE,
int aModeOfDISPLAY = TIME_DATE|TIME_MINUTES
)
Преобразования времени значения, содержащих в секундах, прошедшее с 01.01.1970 в string
форматом "yyyy.mm.dd hh:mi"
.
Здесь можно просто добавить +1 в надлежащее положение этого промежуточного формата (без необходимости обрабатывать все полученные и влиял значения, присутствующие в struct MqlDateTime
, где day_of_week
и day_of_year
, безусловно, не мои любимые, чтобы пересчитать один раз, двигая +1 месяц и т. д.
aCurrentYEAR = int( StringSubstr(aDatetimeSTRING, 0, 4));
aCurrentMONTH = int( StringSubstr(aDatetimeSTRING, 5, 2));
aCurrentDAY = int( StringSubstr(aDatetimeSTRING, 8, 2));
aNextYEAR = aCurrentYEAR + 1;
aNextMONTH = aCurrentMONTH + 1;
Наконец
StringFormat("%04d.%02d.%02d 00:00", aYearNUMBER, aMonthNUMBER, aDayNUMBER)
сделает повторную сборку для вызова другой стандартной функции MQL4:
datetime StringToTime(string aDatetimeSTRING)
Функция преобразует строку, содержащую дату или время в формате "yyyy.mm.dd [hh:mi]"
в datetime
type.
Другой подход может использовать полную разложенные datetime
aritmetics с помощью
int aYE = TimeYear( aDatetimeVALUE);
int aMO = TimeMonth( aDatetimeVALUE);
int aDA = TimeDay( aDatetimeVALUE);
int aHO = TimeHour( aDatetimeVALUE);
int aMI = TimeMinute( aDatetimeVALUE);
int aDoW = TimeDayOfWeek(aDatetimeVALUE);
int aDoY = TimeDayOfYear(aDatetimeVALUE);
datetime aSameTimeNextYEAR = StructToTime((MqlDateTime) { aYE + 1,
aMO,
aDA,
aHO,
aMI,
aDoW,
aDoY
}
);
Спасибо я понял. Нет простого способа добавить 1 мес., Однако эта работа очень полезна для меня. – whitebear
Рад это услышать. Не стесняйтесь проголосовать за полезные ответы и принять наиболее продуманный ответ. ** Наслаждайтесь активным, способствующим членом этого замечательного сообщества, ориентированного на знания! ** – user3666197