Скачать MetaTrader 5

Ошибка времени на компьютерах ВПС StrToTime - Перевод даты компьютера, а не сервера!

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Vladislav Andruschenko
95732
Vladislav Andruschenko  

Ошибка времени на компьютерах ВПС StrToTime - Перевод даты компьютера а не сервера!

всем привет, столкнулся с такой проблемой, функция  StrToTime  - на ВПС работает не верно. 

Она переводит время с неправильной датой

например есть время:

00:00 

и есть код:

     Comment("\n\n\nStrToTime(OpenHours:OpenMinutes) = "+TimeToStr(StrToTime(OpenHours+":"+OpenMinutes))

   +"\n"+"StrToTime(CloseHours:CloseMinutes) = "+TimeToStr(StrToTime(CloseHours+":"+CloseMinutes)));

 

переводит на график следующее:

 

 

хотя сегодня уже 8 марта.  

 

На ВПС сервере разница в 2 часа, Т.е. на брокере 8.45 на ВПС = 10.45

2016.03.07 22:47:26.433 Windows Server 2008 R2 Datacenter (x64 based PC), IE 10.00, RDP, UAC, 1 x Intel Xeon  E3-1230 v3 @ 3.30GHz, RAM: 125 / 1023 Mb, HDD: 2855 / 30617 Mb, GMT-08:00


 

При чем на домашнем компьютере - все отлично.

 

хм. кажется я уже вижу: запись в журнале за прошлый день стоит  Вопрос только откуда он такое время в журнале берет GMT - 8 

Получается так: функция  StrToTime переводит время по компьютеру а не по серверу 

Ihor Herasko
9461
Ihor Herasko  
Сначала нужно дать информацию о том, как получают свои значения OpenHours, OpenMinutes, CloseHours и CloseMinutes. Есть подозрение, что путем обращения к функциям Hour() и Minute(). Если так, то ничего удивительного в этом нет. Они могли вернуть и данные за прошлый год, если программа работает достаточно долго.
Alexander Bereznyak
22144
Alexander Bereznyak  

функции Hour() и Minute() работают относительно последнего известного времени сервера, по времени последнего тика и вернуть данные за прошлый год не могут 

Vladislav Andruschenko
95732
Vladislav Andruschenko  
Ihor Herasko:
Сначала нужно дать информацию о том, как получают свои значения OpenHours, OpenMinutes, CloseHours и CloseMinutes. Есть подозрение, что путем обращения к функциям Hour() и Minute(). Если так, то ничего удивительного в этом нет. Они могли вернуть и данные за прошлый год, если программа работает достаточно долго.

нет, это обычная переменная типа инт 

она никакого отношения к проблеме не имеет, здесь речь идет о том, что функция  

StrToTime  переводит время не сервера а компьютера - что является проблемой в некоторых случаях. 

Vladislav Andruschenko
95732
Vladislav Andruschenko  

var1=StrToTime("2003.8.12 17:35");
  var2=StrToTime("17:35");      // returns the current date with the given time
  var3=StrToTime("2003.8.12");  // returns the date with the midnight time of "00:00"

 

 Так вот в этом виде он подставляет не дату сервера а дату компьютера 

MetaQuotes
Админ
25130
Renat Fatkhullin  

А почему вы считаете, что функция должна работать по серверному времени?

Никак не должна и не работает. Задумайтесь об оффлайн режиме и вообще работе программ без подключения к торговому серверу

Alexander Bereznyak
22144
Alexander Bereznyak  
Vladislav Andruschenko:

var1=StrToTime("2003.8.12 17:35");
  var2=StrToTime("17:35");      // returns the current date with the given time
  var3=StrToTime("2003.8.12");  // returns the date with the midnight time of "00:00"

 

 Так вот в этом виде он подставляет не дату сервера а дату компьютера 

единственный вариант который имеет неопределенность, это var2=StrToTime("17:35");, так как в нем время относительное, а в остальных

время абсолютное и никакого отношения ни к серверному ни к локальному не имеют 

Vladislav Andruschenko
95732
Vladislav Andruschenko  
Renat Fatkhullin:

А почему вы считаете, что функция должна работать по серверному времени?

Никак не должна и не работает. Задумайтесь об оффлайн режиме и вообще работе программ без подключения к торговому серверу

Я всегда думал что timecurrent показывает северное время. Значит и currentdate показывает текущую дату сервера а не локального компьютера. Спорить не буду как должно быть. Проблему решил с помощью timetostr (timecurrent(),time_date) 

В тестере ведь генерируется северное время. И на графике по идее должно быть северное время. Время компьютера это timelocal 
Andrey Khatimlianskii
56772
Andrey Khatimlianskii  
Vladislav Andruschenko:
Я всегда думал что timecurrent показывает северное время. Значит и currentdate показывает текущую дату сервера а не локального компьютера.
В справке говорится не о функции TimeCurrent, а о текущей дате (в переводе - current date). Хотя, можно было и упомянуть, что это дата локальная.
Алексей Тарабанов
7327
Алексей Тарабанов  
Vladislav Andruschenko:

нет, это обычная переменная типа инт 

она никакого отношения к проблеме не имеет, здесь речь идет о том, что функция  

StrToTime  переводит время не сервера а компьютера - что является проблемой в некоторых случаях. 

Открою страшную тайну: эта функция преобразует строку в переменную типа datetime.
Комбинатор
16087
Комбинатор  
Алексей Тарабанов:
Открою страшную тайну: эта функция преобразует строку в переменную типа datetime.
Сарказм не в тему, вопрос об относительных датах в строках
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий