mqlの時間や日付を取得する関数の一覧【int?string?datetime?】【MQL4】

TimeToStr()とStrToTime()

      
      /*
         日付時刻型変数(datetime)の初期値は1970.01.01 00:00
         日付時刻型変数(int)の初期値は1970.01.01 00:00を0とする
         
         なので
         西暦.月.日 時:分:秒
         1970.01.01 00:00:01 == 1
         1970.01.01 00:00:02 == 2
         1970.01.01 00:01:00 == 60
         1970.01.01 01:00:00 == 3600
         となります。
      */


      // TimeToStr()は西暦.月.日 時:分を返す
      string time1 = TimeToStr(1245024000);
      Print("time1",time1); //結果 2009.06.15 00:00


      // StrToTime()は変数の宣言した型によって異なる。
      // int型で変数宣言すると戻り値もint型
      int startTime_minute_int = StrToTime(time1);
      Print("startTime_minute_int",startTime_minute_int);
      //結果 1245024000
      
      // datetime型で変数宣言すると戻り値もdatetime型
      datetime startTime_minute_datetime = StrToTime(time1);
      Print("startTime_minute_datetime",startTime_minute_datetime);
      //結果 2009.06.15 00:00:00
      
      /*
      結果 1245024000
      と
      結果 2009.06.15 00:00:00
      は同じです。
      if(2009.06.15 00:00:00 == 1245024000) //結果はtrue
      
      */

TimeCurrent()とその他サーバー時刻を取得する関数

	  //TimeCurrent()関数は現在のサーバー時刻を返します。
	  //TimeLocal()関数は現在のPCの時刻を返します。
	  /*
            TimeLocal()-TimeCurrent()=7時間(25209秒)
	    時差です。
	  */
      Print("現在のサーバー時間",TimeCurrent());//2020.01.01 00:00:00
      Print("現在のサーバー時間の西暦",Year());//2020
      Print("現在のサーバー時間の月",Month());//1~12
      Print("現在のサーバー時間の日",Day());//1~31
      Print("現在のサーバー時間の曜日",DayOfWeek()); //0:日曜日,6:土曜日
      Print("現在のサーバー時間の時",Hour());//0~23
      Print("現在のサーバー時間の分",Minute());//0~59
      /*
      上記で使われている
      Year(),Month(),Day(),DayOfWeek(),Hour(),Minute()関数はすべてサーバー時刻を
      返します。
      */

TimeLocal()とその他PC時刻を取得するための関数

      /*
      PC時刻を取得するには
      TimeYear(),TimeMonth(),TimeDay(),TimeDayOfWeek(),TimeHour(),TimeMinute()の
      引数にTimeLocal()を入れればOKです。
      */
      Print("現在のPCの時間",TimeLocal()); //2020.01.01 00:00:00
      Print("現在のPCの時間の西暦",TimeYear(TimeLocal())); //2020
      Print("現在のPCの時間の月",TimeMonth(TimeLocal())); //1~12
      Print("現在のPCの時間の日",TimeDay(TimeLocal())); //1~31
      Print("現在のPCの時間の曜日",TimeDayOfWeek(TimeLocal())); //0:日曜日,6:土曜日
      Print("現在のPCの時間の時",TimeHour(TimeLocal())); //0~23
      Print("現在のPCの時間の分",TimeMinute(TimeLocal())); //0~59

      //datetime型をint型にキャストすると数値で出力されます。
      datetime timeCurrent = TimeCurrent();//server_time
      Print("timeCurrent(cast)",(int)timeCurrent); //1580507845
	  
      //そのままだともちろんdatetime型で出力されます。
      Print("timeCurrent",timeCurrent); // 2020.01.31 21:57:25
	  
      //datetime型をint型にキャストすると数値で出力されます。
      datetime timeLocal = TimeLocal();//pc_time
      Print("timeLocal(cast)",(int)timeLocal); //1580533054

      //そのままだともちろんdatetime型で出力されます。
      Print("timeLocal",timeLocal); // 2020.02.01 04:57:34

      //変数をint型にしても数値で出力されます。
      int timeCurrent_int = TimeCurrent();//server_time
      Print("timeCurrent_int",timeCurrent_int); //1580507845
		
      //変数をint型にしても数値で出力されます。
      int timeLocal_int = TimeLocal();//pc_time
      Print("timeLocal_int",timeLocal_int);     //1580533054
	  
      //サーバー時刻とPC時刻の差は25209です。(7時間)
      string sa = timeLocal_int - timeCurrent_int;
      Print("sa",sa); //結果 25209

      //現在のサーバー時刻と現PCの時刻の差は7時間
      string sa_time = TimeToStr(sa);
      Print("sa_time",sa_time); //結果 1970.01.01 07:00

      //差を変数に代入してint型の現在時刻に足すと、現在時刻+7時間が出力されます。
      int h7 = 25209;
      Print(TimeToStr(timeLocal_int+h7)); //2020.02.01 11:57:34

      //25209とありますが毎回、多少ずれます。本来の7時間の秒数は25200ですので9秒ほど実際ずれています。
      //3600秒(1h)*7h=25200

シェアする

  • このエントリーをはてなブックマークに追加

フォローする