see GetTimeZoneInformation function placed in the kernel32.dll
if it returns TIME_ZONE_ID_DAYLIGHT (2), then time should be shifted to summer time
if it returns TIME_ZONE_ID_DAYLIGHT (2), then time should be shifted to summer time
Thanks Slawa, do you have a code example?
-charliev
local time sample in c++
TIME_ZONE_INFORMATION tzinfo={0}; int rettz=::GetTimeZoneInformation(&tzinfo); int tmzone=0; //---- standard or daylight both if(rettz!=TIME_ZONE_ID_UNKNOWN) tmzone=tzinfo.Bias; //---- if daylight then modify if(rettz==TIME_ZONE_ID_DAYLIGHT) tmzone+=tzinfo.DaylightBias; time_t local_time=time(NULL)-tmzone*60;
local time sample in c++
TIME_ZONE_INFORMATION tzinfo={0}; int rettz=::GetTimeZoneInformation(&tzinfo); int tmzone=0; //---- standard or daylight both if(rettz!=TIME_ZONE_ID_UNKNOWN) tmzone=tzinfo.Bias; //---- if daylight then modify if(rettz==TIME_ZONE_ID_DAYLIGHT) tmzone+=tzinfo.DaylightBias; time_t local_time=time(NULL)-tmzone*60;
Thank you Slawa, but I guess I need help parsing tzinfo to get DaylightBias under MT4.
-charliev
Slawa, although this was a complete solution you provided me in my "Millisecond Resolution" post... anything that could help me in this direction would be much appreciated.
Thanks,
-charliev
Thanks,
-charliev
//+------------------------------------------------------------------+ //| LocalTime.mq4 | //| Copyright © 2006, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2006, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" #import "kernel32.dll" void GetLocalTime(int& TimeArray[]); #import //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { int TimeArray[4]; int nYear,nMonth,nDay,nHour,nMin,nSec,nMilliSec; //---- GetLocalTime(TimeArray); Print(GetLastError()); nYear=TimeArray[0]&0x0000FFFF; nMonth=TimeArray[0]>>16; nDay=TimeArray[1]>>16; nHour=TimeArray[2]&0x0000FFFF; nMin=TimeArray[2]>>16; nSec=TimeArray[3]&0x0000FFFF; nMilliSec=TimeArray[3]>>16; Print(nYear,".",nMonth,".",nDay," ",nHour,":",nMin,":",nSec,":",nMilliSec); //---- return(0); } //+------------------------------------------------------------------+
//+------------------------------------------------------------------+ //| LocalTime.mq4 | //| Copyright © 2006, MetaQuotes Software Corp. | //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright "Copyright © 2006, MetaQuotes Software Corp." #property link "http://www.metaquotes.net" #import "kernel32.dll" void GetLocalTime(int& TimeArray[]); int GetTimeZoneInformation(int& TZInfoArray[]); #import //+------------------------------------------------------------------+ //| script program start function | //+------------------------------------------------------------------+ int start() { int TimeArray[4]; int TZInfoArray[43]; int nYear,nMonth,nDay,nHour,nMin,nSec,nMilliSec; string sMilliSec; //---- GetLocalTime(TimeArray); //---- parse date and time from array nYear=TimeArray[0]&0x0000FFFF; nMonth=TimeArray[0]>>16; nDay=TimeArray[1]>>16; nHour=TimeArray[2]&0x0000FFFF; nMin=TimeArray[2]>>16; nSec=TimeArray[3]&0x0000FFFF; nMilliSec=TimeArray[3]>>16; //---- format date and time items sMilliSec=1000+nMilliSec; sMilliSec=StringSubstr(sMilliSec,1); string time_string=FormatDateTime(nYear,nMonth,nDay,nHour,nMin,nSec); Print("Local time is: ",time_string,":",sMilliSec); //---- shift with daylight savings int gmt_shift=0; int ret=GetTimeZoneInformation(TZInfoArray); if(ret!=0) gmt_shift=TZInfoArray[0]; Print("Difference between your local time and GMT is: ",gmt_shift," minutes"); if(ret==2) gmt_shift+=TZInfoArray[42]; Print("Current difference between your local time and GMT is: ",gmt_shift," minutes"); //---- GMT datetime local_time=StrToTime(time_string)+nSec; Print("Greenwich mean time is: ",TimeToStr(local_time+gmt_shift*60,TIME_DATE|TIME_SECONDS)); //---- winter time (nYear remains the current) nMonth=TZInfoArray[17]>>16; nDay=TZInfoArray[18]>>16; nHour=TZInfoArray[19]&0x0000FFFF; nMin=TZInfoArray[19]>>16; nSec=TZInfoArray[20]&0x0000FFFF; time_string=FormatDateTime(nYear,nMonth,nDay,nHour,nMin,nSec); Print("Standard time is: ",time_string); //---- summer time (nYear remains the current) nMonth=TZInfoArray[38]>>16; nDay=TZInfoArray[39]>>16; nHour=TZInfoArray[40]&0x0000FFFF; nMin=TZInfoArray[40]>>16; nSec=TZInfoArray[41]&0x0000FFFF; time_string=FormatDateTime(nYear,nMonth,nDay,nHour,nMin,nSec); Print("Daylight savings time is: ",time_string); //---- return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ string FormatDateTime(int nYear,int nMonth,int nDay,int nHour,int nMin,int nSec) { string sMonth,sDay,sHour,sMin,sSec; //---- sMonth=100+nMonth; sMonth=StringSubstr(sMonth,1); sDay=100+nDay; sDay=StringSubstr(sDay,1); sHour=100+nHour; sHour=StringSubstr(sHour,1); sMin=100+nMin; sMin=StringSubstr(sMin,1); sSec=100+nSec; sSec=StringSubstr(sSec,1); //---- return(StringConcatenate(nYear,".",sMonth,".",sDay," ",sHour,":",sMin,":",sSec)); } //+------------------------------------------------------------------+
Slawa, WOW! Excellent... THANKS!
-charliev
-charliev
You are missing trading opportunities:
- Free trading apps
- Over 8,000 signals for copying
- Economic news for exploring financial markets
Registration
Log in
You agree to website policy and terms of use
If you do not have an account, please register
Does anyone have a code example to determine daylight savings time?
Thank you,
-charliev