Когда переводят часы в нью йорке
Из области тупорылых сказок придёт бабайка ночью и съест тебя. Линия перемены дат Из-за того, что Земля круглая необходимо определиться, где на Земле сегодня, а где завтра. И все. ТСН Наука и IT Что показывают часы Судного дня, символизирующие приближение мира к ядерному уничтожению Что показывают часы Судного дня, символизирующие приближение мира к ядерному уничтожению.
Различные шкалы времени имеют различные начальные точки отсчета. Кроме того, один и тот же момент времени из-за смещения в секундах будет трактоваться по-разному в разных шкалах. На графике приведены самые распространенные шкалы времени и смещения относительно их, начиная с 1 января года 0 часов 0 минут 0 секунд UTC момент времени, когда UTC стал отличаться на целое число секунд от UT1, и было принято решение о високосных секундах.
Земной шар можно разделить по меридианам на 24 равных части и для каждой части установить смещение во времени относительно времени UTC на один час. Это смещение называется географическим часовым поясом. Но в этом случае учитывается только географическое положение, но не учитывается административная принадлежность. Чтобы учитывать административную принадлежность были введены административные часовые пояса, и тут возникает много интересных вещей.
Есть особый часовой пояс, который не проходит ни через одно государство со значением смещения Это линия перемены дат. Благодаря административным часовым поясам на территории Китая, который занимает несколько географических часовых поясов действует один административный часовой пояс, а в некоторых штатах США могут действовать разные административные часовые пояса в пределах штата.
Кроме того, смещение относительно UTC может меняться не только при движении с запада на восток или востока на запад, но и при движении с севера на юг или с юга на север.
Раньше за полдень было принято считать момент времени, когда Солнце находилось в зените, поэтому для каждого города 12 часов дня это были разные моменты времени.
В принципе это всех устраивало, так как, добравшись до города, можно было перевести часы и забыть, но, когда возникли паровозы, и нужно было составлять расписание движения поездов, это превратилось в кошмар, поэтому сначала все поезда стали ходить по Лондонскому времени, а потом появилось время GMT и часовые пояса.
Время GMT позволяет однозначно определить момент времени на земном шаре, а часовые пояса используются для того, чтобы 12 часов дня были днем, а 6 часов вечера вечером на определенной территории. Из-за того, что Земля круглая необходимо определиться, где на Земле сегодня, а где завтра.
Граница, которая разделяет время на земном шаре на сегодня и завтра называется линией перемены дат. Ее можно было провести по Гринвичскому меридиану, но это было бы очень неудобно , так как он пересекает множество населенных территорий и было бы неудобно, когда на одной части территории сегодня, а на другой уже завтра, поэтому было принято решение провести ее по наименее населенной области планеты в Тихом океане.
На административных часовых поясах люди не остановились и добавили еще понятие летнего времени. Летнее время вводилось для экономии расхода электроэнергии. Суть его в следующем, что весной стрелки часов переводятся на час вперед относительно стандартного времени, а зимой на час назад. Когда именно в разных странах этот момент определяется по-разному, поэтому могут быть случаи, когда где-то еще продолжает действие летнее время, а где-то уже оно прекратилось.
Часто это может является причиной срывов митингов в географически распределенных командах. В последнее время многие ученые считают, что перевод часов вызывает стресс у человеческого организма, поскольку ему нужно перестраивать свои биологические часы. Если вам показалось этого мало, то следует заметить, что на разных территориях в разные периоды времени могли действовать разные административные часовые пояса.
Чтобы упростить работу программиста с такими случаями, была разработана Time Zone Database , которая постоянно дополняется и корректируется. Она содержит исходный код для работы с часовыми поясами, а также описания всех известных часовых поясов когда и какое часовой пояс использовался на определенной территории, когда вводилось или отменялось летнее время.
Многие операционные системы и базы данных используют ее для работы с датой и временем. Так как определения изменяются со временем, нужно проводить обновления определений часовых поясов в операционной системе или СУБД. Летнее время оказывает влияние на смещение локального времени относительно UTC, а также изменяет количество часов в сутках, когда происходит переход на летнее время и обратно.
Сутки, когда происходит переход на зимнее время, длятся 25 часов, на летнее — 23 часа. Високосная секунда изменяет количество секунд в году. Теоретически на данный момент она может быть как плюс, как минус и вводиться до четырех раз в год. Например, рабочая смена начинается в 10 и длится 8 часов в соответствии с локальным временем.
Фактически сотрудник может работать 7 или 9 реальных часов, но по локальному времени это будет 8 часов. Возьмем другой пример. Самолет вылетает из аэропорта в 10 часов по локальному времени. Полет занимает 8 часов. Использовать локальное время для расчетов нельзя. Так как добавив 8 часов к локальному времени, мы получим 6 часов утра по локальному времени. Даже, если предположить, самолет не пересекал часовых поясов, мы можем получить неверный результат, если полет осуществлялся во время перехода с зимнего на летнее время или наоборот.
Возможны более сложные варианты, когда самолет вылетает из одного часового пояса, а прилетает в другой, причем в другом перевода на зимнее или летнее время не производится. Чтобы решить такую проблему, нужно локальное время перевести в UTC время, выполнить всю арифметику, а потом перевести в локальное время того часового пояса, для которого мы хотим знать локальное время прилета. В этой статье я не привел никакого исходного кода, программных библиотек, а осветил только базовые понятия, которые вам понадобятся для написания программ для работы со временем.
Но я думаю, информации, приведенной в этой статье вам достаточно чтобы систематизировать ваши знания о времени, и вы узнали что-то новое. Интересных фактов и особенностей работы со временем очень много, и разумеется, что они не уместились в этой статье, которую я старался сделать максимально краткой. Если тема времени окажется вам интересной и требующей продолжения, я его напишу.
Поиск Написать публикацию. Время на прочтение 9 мин. Календари В современном мире, для многих задач время удобно измерять в секундах и долях секунды, но долгое время люди изменяли его при помощи суток и лет. Шкалы времени Для того, чтобы сопоставить момент времени с численным значением используются различные шкалы времени. TAI На данный момент фундаментальным понятием в измерении времени является секунда.
Земное время TT ТT — теоретическая шкала времени. Unix Самым распространенным подходом к работе со временем в информационных технологиях является время Unix. Java В Java тоже во всех сутках секунд, но момент времени однозначно идентифицируется целым числом секунд. Иными словами, принято считать, что каждая из последних секунд суток с високосной секундой равна 0. Смещение во времени в различных шкалах Различные шкалы времени имеют различные начальные точки отсчета.
Часовые пояса Земной шар можно разделить по меридианам на 24 равных части и для каждой части установить смещение во времени относительно времени UTC на один час. GMT и часовые пояса Раньше за полдень было принято считать момент времени, когда Солнце находилось в зените, поэтому для каждого города 12 часов дня это были разные моменты времени.
Линия перемены дат Из-за того, что Земля круглая необходимо определиться, где на Земле сегодня, а где завтра. Стандартное и летнее время На административных часовых поясах люди не остановились и добавили еще понятие летнего времени.
Наблюдается тенденция отказа от летнего времени во многих странах. Исторические часовые пояса Если вам показалось этого мало, то следует заметить, что на разных территориях в разные периоды времени могли действовать разные административные часовые пояса. Високосный год. Летнее время.
Високосная секунда Високосный год изменяет количество суток в году. Так как во времени UTC нет понятия летнего времени — сутки по времени UTC длятся всегда 24 часа Високосная секунда изменяет количество секунд в году. Выводы В этой статье я не привел никакого исходного кода, программных библиотек, а осветил только базовые понятия, которые вам понадобятся для написания программ для работы со временем. Если вы найдете какие-то неточности в статье, буду рад, если вы сообщите о них в комментариях.
Хабы: Программирование. Эта функция, как и все другие, что мы рассматривали в первой статье, содержатся в файле. После объявления переменных, инициализации и обнуления соответствующих глобальных переменных:.
Таким образом, если запустить скрипт в режиме отладки F5 , можно посмотреть все детали, а если запустить его прямо на графике, будут показано только самое важное. Июнь попадает на летнее время, а следующий переход будет на зимнее время.
Следующей строкой получаем время открытия последнего часового бара H1 в пятницу, предшествующую этим выходным — это будет основа для наших расчетов.
Если отсутствует какие-либо часы между в пятницу и в воскресенье, тогда будет не хватать котировок воскресенья до получения самой первой котировки, а не последних котировок пятницы. У этого символа, пожалуй, самая длинная история котировок.
Поэтому, если торговля на рынке закрывается в по Нью-Йорку, последний рабочий час или последняя часовая свеча открывается в Именно этот час нас и интересует. Получается, что первый час после выходных — воскресенья в Нью-Йорке. Для полноты картины также определим смену часов в Австралии, однако использовать его не будем.
Далее, в первые выходные после смены часов, определяем время следующего перевода часов. Затем используется функция chckFriday Расчет происходит основе времени по Нью-Йорку. Функция также включена в include-файл. По тому же принципу рассчитываются оставшиеся смены часов для второго полугодия, которые нам, собственно, не нужны, и которые можно закомментировать:.
И хотя перерасчет должен быть только в том случае, если в ходе истории "случались" выходные с переводом часов, все же лучше сбросить заранее, чтобы потом не забыть. Затем проверяем, заданы ли все необходимые переменные. Результат выводится в журнал экспертов:. Любой пользователь сможет использовать эти значения для входных переменных вместо того, чтобы добавлять функции до начала работы самого советника в тестере стратегий или в реальном времени на графике.
Пример я покажу в конце статьи. Давайте поближе посмотрим на функцию chckFriday В структуре три поля:. Обратной ситуации, когда в США уже еще зимнее, а в Европе еще уже летнее, не существует.
Возникает вопрос: почему нет четвертой категории и что с Австралией? Вот правила перехода:. Итак, что с первым вопросом. Затем весной США раньше переходит на летнее время. Получается, в США уже неделю-две летнее время, а в Европе еще зимнее. Так что обратной ситуации, когда в Европе летнее время, а в США еще зимнее, не существует. Это фактически устраняет необходимость расчета смещения времени брокера для обоих периодов перевода часов, осенью и весной.
Тем не менее мы производим расчет, просто для полноты и контроля. Что касается второго вопроса. Австралия переводит часы в ноябре одновременно с США, а весной переводит часы как Европа. То есть нет новых выходных дней, в которые совершался бы переход. Располагая временем перевода часов для определенного периода, можно также посчитать длительность работы форекс-рынка в соответствующие недели: эти значения хранятся в полях secFxWiWiВи , secFxSuSu и secFxSuWi , а текущее фактическое значение — в ActSecFX.
В разделе "Применение" в конце статьи показано, что с этим делать. Чтобы присвоить значения, их надо сначала рассчитать. После объявления переменных и сброса глобальных переменных рассчитываются значения смещения в Европе и США для выбранного времени брокера tB :. Здесь tB — это начало последнего часа в пятницу, когда в Нью-Йорке Это основа дальнейших расчетов, для этого времени мы можем рассчитать GMT:.
Вот как определяется сдвиг: от последнего часа в пятницу по времени tB отнимаем количество секунд, прошедших с начала дня SoB tB. Теперь можно легко определить смещение времени брокера от GMT, а полученное значение записать в соответствующее поле переменной OffsetBroker. В функции расчеты идут в часах, а не секундах, с макроподстановкой HoD Hour of Day, час суток , чтобы было удобнее работать:. Следующая часть добавлена для проверки. Он проверяет, чтобы не возникла невозможная ситуация, когда в США лето, а в Европе зима:.
EUR: Fr. Давайте посмотрим, что же тут выводится. Сначала Европа переводит часы 25 октября. Через неделю, 1 ноября, часы переводят в США. В период между двумя этими датами последний час пятницы на сервере MetaQuotes начинается в , а не в , а заканчивается неделя этой свечой, то есть через часа вместо обычных Секунды недели SoW , Seconds of Week и похожие функции работают с календарной неделей, которая начинается в воскресенье в На основе это значения для любого заданного момента недели можно рассчитать оставшееся времени работы ранка до конца недели.
На основе этих трех строчек также проверяется логика и расчеты. Также можно определить местное время по Гринвичу GMT. Слева направо: таймстамп брокера, расчетное время по Нью-Йорку, hNY: 16 , час по Гринвичу на основе времени в Нью-Йорке, час времени брокера и сдвиг: -2 или Ниже выполняется вторая проверка для рандомного времени в истории и для других брокеров. Сначала проверяем, нужен ли вообще пересчет в данном примере для EUR :. После объявления переменной и инициализации подходим к сути функции.
Эта функция не моя. Некоторое время назад я где-то в интернете нашел алгоритм, определяющий определенный день в месяце.
Он используется для определения летнего или зимнего времени для выбранного момента. Сам по себе алгоритм несложный:. Магия этого алгоритма заключается в строке кода, которая определяет день месяца, когда переводят часы. В Европе это последнее воскресенье марта, рассчитывается так как я уже сказала, идея формулы не моя :. Все даты рассчитываются аналогичным образом. Далее идет большой раздел кода, в котором определяется текущий переход на летнее или зимнее время и следующая дата перехода в Европе для выбранной даты.
В итоге нам нужно найти три периода в году: перед первым переходом, между первым и вторым, после второго перехода. Следующий переход будет уже в следующем году, и это необходимо учитывать:. Перевод времени в Австралии может сбивать с толку, но это связано с тем, что Австралия расположена в южном полушарии, где начало года приходится на середину лета, поэтому переход на летнее время происходит, когда в Европе зима.
Отдельно пришлось написать код для работы со временем в России. Поскольку в России были изменения, связанные с переводом часов, я решил использовать двумерный массив, который содержит время переходов. Запросить ее можно с помощью этой функции:. Мы подошли к последней функции в этом проекте.
Эта функция обеспечивает актуальность всех важных значений:. В самом начале функция спрашивает, нужно ли установить смещение времени и дату следующего перехода. Если нет, работа функции завершается. Далее, в зависимости от периода, в поле OffsetBroker. И все. Мы рассмотрели все необходимые функции: функция определения смещения времени брокера по котировке и функция, которая всегда определяет текущее смещение, на основе которого можно легко определить время по Гринвичу GMT и, соответственно, локальное время, даже при работе в тестере стратегий.
Найденные значения можно присваивать входным переменным. Это пример для следующей главы. Мы уже разобрали выше, как работает эта часть. Моделируем путь от прошлого к настоящему часу работы брокера, рассчитываем и печатаем значения GMT New York и оставшееся время, в течение которого рынок форекс будет открытым для случайно выбранных временных меток. Чтобы не утонуть в куче данных, посмотрим данные для случайно определенных баров. Для этого выберем количество данных. Будем проверять ситуацию на каждом новом баре: checkTimeOffset arr1h[b].
Мы помним, что в этой функции в первую очередь проверяется необходимость пересчета, поэтому вызов не очень ресурсоемкий, несмотря на частоту:.
Значения выводятся и вычисляется следующий бар:.