Please do not mix local time and system time. Local time depends on time zone always - this is local time
Can you please do the following to confirm the bug?
Step 1: Set your Timezone to US EST.
What is the TimeLocal() from MT4?
Step 2: Without changing time on your computer, change the Timezone to GMT+8 Singapore.
What is the TimeLocal() from MT4?
Step 3: Without changing time on your computer, change the TimeZone to GMT+8 Beijing/HK.
What is the TimeLocal() from MT4?
The answers would be:
1. TimeLocal() = Time of Computer
2. TimeLocal() = Time of Computer
3. TimeLocal() = GMT+0 instead of GMT+8
As I said it is a bug.
Step 1: Set your Timezone to US EST.
What is the TimeLocal() from MT4?
Step 2: Without changing time on your computer, change the Timezone to GMT+8 Singapore.
What is the TimeLocal() from MT4?
Step 3: Without changing time on your computer, change the TimeZone to GMT+8 Beijing/HK.
What is the TimeLocal() from MT4?
The answers would be:
1. TimeLocal() = Time of Computer
2. TimeLocal() = Time of Computer
3. TimeLocal() = GMT+0 instead of GMT+8
As I said it is a bug.
To confirm this bug:
I have a friend in Florida (GMT-5 aka EST), a friend in Cairo (GMT+2), and I am in HK (GMT+8)
My computer time is currently 21:18:00
In Florida, computer time is 9:18:00
In Cairo, computer time is 15:18:00
The script above shows:
My Computer: 13:18:00
Florida Computer: 9:18:00
Cairo Computer: 15:18:00
So why is it that on my computer it is showing 13:18 instead of 21:18?
But when I change my Timezone (No change to time) to GMT+8 Perth, it now displays 21:18:00 and is now same with all the other 3 people...
TimeLocal() displays GMT+0 when I use Timezone HK, Singapore; but TimeLocal() displays GMT+8 when I choose Timezone Perth... I hope someone can explain this "special phenomenon"....
I have a friend in Florida (GMT-5 aka EST), a friend in Cairo (GMT+2), and I am in HK (GMT+8)
My computer time is currently 21:18:00
In Florida, computer time is 9:18:00
In Cairo, computer time is 15:18:00
The script above shows:
My Computer: 13:18:00
Florida Computer: 9:18:00
Cairo Computer: 15:18:00
So why is it that on my computer it is showing 13:18 instead of 21:18?
But when I change my Timezone (No change to time) to GMT+8 Perth, it now displays 21:18:00 and is now same with all the other 3 people...
TimeLocal() displays GMT+0 when I use Timezone HK, Singapore; but TimeLocal() displays GMT+8 when I choose Timezone Perth... I hope someone can explain this "special phenomenon"....
Sorry, I don't understand. Does time returned from TimeLocal function differ from computer clock?
EXACTLY! TimeLocal() should be same with Computer Time, but on some TimeZones, it is not.
Change your Timezone to GMT+8 Beijing (where I am in) and see the difference. There are other timezones wherein its not same also as listed on my first post.
I have tested this on 4 of my computers (WinXP) and someone in Florida and Cairo have tested this as well.
Stop client terminal
Change TimeZone
Start client terminal
Check compare local time with computer clock
Use my script and please show screenshot
Change TimeZone
Start client terminal
Check compare local time with computer clock
Use my script and please show screenshot
//+------------------------------------------------------------------+ //| 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[]); void GetSystemTime(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; //---- GetSystemTime(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; //---- format date and time items string time_string=FormatDateTime(nYear,nMonth,nDay,nHour,nMin,nSec); Print("System time is: ",time_string); //---- Print("TimeLocal function returns ",TimeToStr(TimeLocal())); //---- 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); 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); Print("Greenwich mean time is: ",TimeToStr(local_time+gmt_shift*60,TIME_DATE|TIME_SECONDS)); //---- winter time (nYear remains the current) nYear=TimeArray[17]&0x0000FFFF; 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) nYear=TimeArray[38]&0x0000FFFF; 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)); } //+------------------------------------------------------------------+
More clear. Thank You. We will think how fix it
I cannot reproduce
What the operating system do You use?
What the operating system do You use?
All my computers are WinXP Home and Pro; a friend in Cairo use WinXP too; and I dont know if my friend in Florida uses WinXP too - but I guess he is not using Vista yet.
When you try to reproduce, what timezone did you try?
GMT+8 Beijing, HongKong is giving me the problem. Other timezone is giving me error as well to name a few:
GMT-10 Hawaii
GMT-7 Arizona
GMT-6 Central America
GMT-6 Saskatchewan
I have build 202; build 203 is not available yet. I have tried this on all the MT4 brokers I could find: IBFX, NF, MIGFX, PFGFX, FXDD same result: TimeLocal() always displays GMT+0 instead of GMT+8 on my computers.
When you try to reproduce, what timezone did you try?
GMT+8 Beijing, HongKong is giving me the problem. Other timezone is giving me error as well to name a few:
GMT-10 Hawaii
GMT-7 Arizona
GMT-6 Central America
GMT-6 Saskatchewan
I have build 202; build 203 is not available yet. I have tried this on all the MT4 brokers I could find: IBFX, NF, MIGFX, PFGFX, FXDD same result: TimeLocal() always displays GMT+0 instead of GMT+8 on my computers.
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
The clock changes from GMT+0 to Computer's LocalTime depending on the timezone of the computer. Listed are some "Time Zones" and the corresponding clock
GMT+12 AuckLand, Wellington 11:00 (local time)
GMT+11 Magadan, Solomon Is. 23:00 (time of GMT+0)
GMT+10 Vladivostok 9:00 (local time)
GMT+9:30 Darwin 23:00 (time of GMT+0)
GMT +8 Perth 7:00 (local time)
GMT+8 Singapore 23:00 (time of GMT+0)
GMT+8 Ulaan Bataar 7:00 (local time)
GMT+8 Beijing 23:00 (time of GMT+0)
GMT+2 Cairo 1:00 (local time)
GMT+0 London 23:00 (time of GMT+0)
GMT-5 Eastern Time 18:00 (local time)
.
.
.
TimeLocal gives out either GMT+0 or localtime depending on the "TimeZone" selected on the computer.
It is definitely a bug!