如何从 MQL4 中的文本字符串中获取时间?
How to grab a time from a string of text in MQL4?
正在尝试从 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
日期。
有更简单的方法吗?或者任何人都知道如何修复它的方法?
如有任何帮助,我们将不胜感激!
好吧,让我们一步一步来:
正确抓取“From
”部分:
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()
The function converts a string
containing time or date in "yyyy.mm.dd [hh:mi]"
format into datetime
type.
原则上同样适用于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 )
)
);
正在尝试从 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
日期。
有更简单的方法吗?或者任何人都知道如何修复它的方法?
如有任何帮助,我们将不胜感激!
好吧,让我们一步一步来:
正确抓取“From
”部分:
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()
The function converts astring
containing time or date in"yyyy.mm.dd [hh:mi]"
format intodatetime
type.
原则上同样适用于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 )
)
);