
erli zhinian:
t
t
虽然不是直接回答你的问题,以下是我用来管理时间的代码。
//+------------------------------------------------------------------+ enum TIME_OFFSET { ChoicedTime, CurrentTime, Back1Hour, Back2Hour, Back3Hour, Back5Hour, Back1Day, Back2Day, back3Day, Back5Day, }; class TIME_CHOICE { public: MqlDateTime choiced; datetime get(void) { return StructToTime(choiced); } void set(datetime t) { TimeToStruct(t, choiced); } void check(int min=0, int hour=0, int day=0); void back(int min, int hour, int day, TIME_OFFSET mode, datetime select); }; void TIME_CHOICE::check(int min=0,int hour=0,int day=0) { choiced.min-=min; while (choiced.min<0) { choiced.hour--; choiced.min+=60; } choiced.hour-=hour; while (choiced.hour<0) { choiced.day--; choiced.hour+=24; } choiced.day-=day; while (choiced.day<1) { switch (choiced.mon) { case 3: choiced.day+=28; break; case 1: case 5: case 7: case 8: case 10: case 12: choiced.day+=30; break; default: choiced.day+=31; } choiced.mon--; } } void TIME_CHOICE::back(int min,int hour,int day, TIME_OFFSET mode,datetime select) { TimeCurrent(choiced); switch (mode) { case ChoicedTime: TimeToStruct(select,choiced); break; case Back1Hour: check(0,1); break; case Back2Hour: check(0,2); break; case Back3Hour: check(0,3); break; case Back5Hour: check(0,5); break; case Back1Day: check(0,0,1); break; case Back2Day: check(0,0,2); break; case back3Day: check(0,0,3); break; case Back5Day: check(0,0,5); break; case CurrentTime: default: check(min,hour,day); break; } } //+------------------------------------------------------------------+
erli zhinian:
t
t
完全可以