跳至内容

TimeGMT

TimeGMT

返回GMT,该计算考虑到当客户端运行时电脑上当地时间的DST转换,有两种变量函数。

无参量调用

datetime  TimeGMT();

调用MqlDateTime类型参量

datetime  TimeGMT(
   MqlDateTime&  dt_struct      // 结构类型变量
   );

参量

dt_struct

[out] MqlDateTime 结构类型变量。

返回值

日期时间 类型值

注释

如果 MqlDateTime 结构类型变量以参量传递,就会填满。

要安排高分辨率的计数器和计时器,可使用GetTickCount()函数,它产生的值以毫秒为单位。

在策略测试器进行测试期间,TimeGMT() 总是相当于模拟服务器时间的 TimeTradeServer()

示例:

void OnStart()
  {
//--- 声明MqlDateTime变量以填充日期/时间数据,并获取PC本地时间和GMT
   MqlDateTime tm={};
   datetime    time1=TimeLocal();            // 第一种调用形式:PC本地时间
   datetime    time2=TimeGMT(tm);            // 第二种调用形式:通过填充MqlDateTime结构从PC本地时间计算GMT
   int         shift=int(time1-time2)/3600;  // 本地时间相对于GMT的偏移量

//--- 使用日志中填充的MqlDateTime结构的数据显示本地时间和GMT
   PrintFormat("Time Local: %s\nTime GMT: %s\n- Year: %u\n- Month: %02u\n- Day: %02u\n"+
               "- Hour: %02u\n- Min: %02u\n- Sec: %02u\n- Day of Year: %03u\n- Day of Week: %u (%s)\nLocal time offset relative to GMT: %+d",
               (string)time1, (string)time2, tm.year, tm.mon, tm.day, tm.hour, tm.min, tm.sec, tm.day_of_year, tm.day_of_week,
               EnumToString((ENUM_DAY_OF_WEEK)tm.day_of_week), shift);
   /*
   Result:
   Time Local: 2024.04.18 19:37:23
   Time GMT: 2024.04.18 12:37:23
   - Year: 2024
   - Month: 04
   - Day: 18
   - Hour: 12
   - Min: 37
   - Sec: 23
   - Day of Year: 108
   - Day of Week: 4 (THURSDAY)
   Local time offset relative to GMT: +7
   */
  }