尝试从 MQL4
中的字符串文本中获取时间值。
字符串
string start_time = "From 21:17 03-02-2016 GMT Till 01:17 04-02-2016 GMT";
我试过的代码
string EndDate = StrToTime( StringSubstr( start_time,
StringFind( start_time,
"Till "
)
+ 5,
( StringFind( start_time,
"GMT",
StringFind( start_time,
"Till "
)
+ 5
) - 1
)
- StringFind( start_time,
"Till "
)
- 2
)
);
datetime exptime = EndDate;
当前输出如图所示
2016.02.03 01:17
抓取 From
日期而不是 Till
日期。
有更简单的方法吗?或者任何人都知道如何解决它?
非常感谢任何帮助!
答案 0 :(得分:1)
From
" -part:int startPTR = StringFind( start_time, // __________ "From 21:17 03-02-2016 GMT ...
"From " // __________ |From |.....
) // points at |F ^
+ 5; // points |>>>>5|B after "From " starts ...
// 0 1 2
// .123456789.123456789.123
int stopPTR = StringFind( start_time, // __________ "From 21:17 03-02-2016 GMT ...
" GMT " // ________________________________| GMT |..
); // points at _______________________^
string FromTIME = StringSubstring( start_time, // __________ "From 21:17 03-02-2016 GMT ...
startPTR, // [ 5]
stopPTR // [21]
- startPTR //-[ 5]
); //_________________|21:17 03-02-2016|
string
到datetime
还应检查MQL4
语法详细信息,因为它报告:
StringToTime()
该功能将包含string
格式的时间或日期的"yyyy.mm.dd [hh:mi]"
转换为datetime
类型。
原则上同样适用于 StrToTime()
功能。如果您有疑问,为什么 New - MQL4
对同一件事有两个不同的功能,请不要问我,请问MetaQuotes,Inc。
因此, FromTIME
字符串最终必须进行一些重新调整,以满足标准 StringToTime()
功能要求。
datetime Exp = StrToTime( StringConcatenate(
/* YYYY */ StringSubstring( FromTIME, 12, 4 ),
/* . */ ".",
/* MM */ StringSubstring( FromTIME, 9, 2 ),
/* . */ ".",
/* DD */ StringSubstring( FromTIME, 6, 2 ),
/* _ */ " ",
/* HH:MM */ StringSubstring( FromTIME, 0, 5 )
)
);