在MQL语言中,StringToTime 是将格式为”年.月.日 [小时:分钟]”(”yyyy.mm.dd [hh:mi]”)这种包含时间/日期的字符串转换格式为 datetime 的时间类型。简单点说,StringToTime 就是将日期相关的字符串转换为日期时间型。
先看一下 StringToTime 函数结构:
datetime StringToTime
(
const string time_string // 日期字符串
);
在 MQL5 语言中 time_string 参数 [in] 可以是以下几种指定格式的字符串:
- “yyyy.mm.dd [hh:mi]”
- “yyyy.mm.dd [hh:mi:ss]”
- “yyyymmdd [hh:mi:ss]”
- •”yyyymmdd [hhmiss]”
- •”yyyy/mm/dd [hh:mi:ss]”
- “yyyy-mm-dd [hh:mi:ss]”
而在 MQL4 语言中 time_string 参数 [in] 指定为:” yyyy.mm.dd hh:mi “或 ” yyyy.mm.dd hh:mi:ss “,其中 yyyy.mm.dd 用 yyyy/mm/dd 也是可以的。但是用 yyyy-mm-dd 或 yyyymmdd这种,MQL4语言就不能识别。
StringToTime 函数返回值为 datetime 类型值,包含自01.01.1970以来过去的秒数。
为了便于说明,可以将下面代码加入到指标或智能交易EA中测试下输出的结果:
datetime time_1 = StringToTime("2022/08/25 12:23:26");
datetime time_2 = StringToTime("2021.12.11 23:12:26");
Comment(time_1,"-----",time_2);
这里只是做一个简单的演示,具体编程使用中,根据所需时间的 datetime 类型进行演变即可。
在MQL5语言中,字符串转换时间日期类型,用的就是 StringToTime 函数。而在 MQL4 语言中,和 StringToTime 函数同时存在的还有 StrToTime ,两个函数结构和输出结果都是相同的,从官方说明中,能找出其不同的地方是:
- StringToTime 的参数说明是 String in ” yyyy.mm.dd hh:mi ” format. 中文意思:格式为 “yyyy.mm.dd hh:mi “的字符串。
- StrToTime 的参数说明是 String having “yyyy.mm.dd hh:mi ” format. 中文意思:具有 “yyyy.mm.dd hh:mi “格式的字符串。
其实也没必要过于去考究它两的区别,正常情况下用 StringToTime 就能解决需求。