|
Текущее время с сервера
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovСейчас-то проблем нет: сказал клиент "12:00", сервер выдаёт данные на "12:00". А вот при учёте часового пояса, который может быть выставлен неверно или без учёта смены летнего времени ты получишь данные на "13:00" или "11:00" очень даже легко. Возьмём последний случай: на сервере, где крутится трекер, было выставлено американское время, но часовой пояс UTC. В результате все считали, что он на 10 часов в будущем. Предпоследний случай: пропатченная винда для Москвы имеет пояс GMT+3, непропатченная GMT+4. Будет забавно, если с двух соседних компьютеров запрос будет выдавать разные данные?Клиент должен видеть по дефолту всё в поясе сервера. Поэтому у сервера должен быть указан рабочий пояс (должен браться либо из ОС, либо из конфига FB, либо из конфига БД). А клиент пусть сам решает в каком ему поясе работать - в серверном или в поясе клиентсой ОС или в каком другом. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2015, 16:47 |
|
Текущее время с сервера
|
|||
---|---|---|---|
#18+
kdvне очень я понял. Допустим, у меня 2 компа. 1 - время 12:00, UTC+3 2 - время 13:00, UTC+4 А вот без "допустим" (по моему собственному опыту) у тебя будет 1 - время 12:00, UTC+3 2 - время 12:00, UTC+4 время выставлено принудительно одинаковое, ибо по нему с работы уходить. Последствия просчитать сумеешь? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2015, 16:48 |
|
Текущее время с сервера
|
|||
---|---|---|---|
#18+
-Как выбрать документы за 1 января по владивостокскому времени?Или различать календарные даты и отметки на шкале мирового времени или разрабатывать приложение, умеющее работать в разных часовых поясах. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2015, 16:55 |
|
Текущее время с сервера
|
|||
---|---|---|---|
#18+
Звиняйте, коллеги, но моя мало что из вашей интеллектуальной беседы понял. Такое впечатление, что каждый разговаривает на своем языке. Может кто сформулирует некие примеры (модели поведения) сервера, ради чего все это? Типа такого: Есть некая организация со штаб квартирой во Владике (для примера), у нее есть пара филиалов в Москве и Калининграде. фиксируются даты прохождения первички (например накладная типа торг12), доки могут проходить по любой из трех точек, надо получить, например, оборотную ведомость за 13 мая (например пять таки). По какому часовому поясу она должна быть? Должна ли оборотка быть одинаковой при получении оной в любом филиале? А если я получаю отчет строго по владику и строго по москве отдельно? а если вместе? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2015, 17:00 |
|
Текущее время с сервера
|
|||
---|---|---|---|
#18+
Ivan_PisarevskyЕсть некая организация со штаб квартирой во Владике (для примера), у нее есть пара филиалов в Москве и Калининграде. фиксируются даты прохождения первички (например накладная типа торг12), доки могут проходить по любой из трех точек, надо получить, например, оборотную ведомость за 13 мая (например пять таки). По какому часовому поясу она должна быть?Ни по какому - календарная дата никак не привязана к часовому поясу. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2015, 17:07 |
|
Текущее время с сервера
|
|||
---|---|---|---|
#18+
Basil A. SidorovНи по какому - календарная дата никак не привязана к часовому поясу. Да ну? Тебя не смущает, что во Владивостоке уже наступило завтра? Документ проведённый там прямо сейчас в какой отчёт должен попасть: сегодняшний или завтрашний? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2015, 17:20 |
|
Текущее время с сервера
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovДа ну? Тебя не смущает, что во Владивостоке уже наступило завтра? Документ проведённый там прямо сейчас в какой отчёт должен попасть: сегодняшний или завтрашний?Если документ, в шапке которого пропечатана конкретная календарная дата попадёт в другой месяц/квартал, налоговую, вероятно, не устроит лепет о часовых поясах и географически разнесённых узлах информационной системы. UTC позволяет хронологически упорядочить некоторую последовательность событий без всяких преобразований отметок "дата-время". Но существует ещё, как минимум две задачи: 1. Работа с местным временем (расписание, привязанное к физиологическим привычкам организма); 2. Работа с календарными датами. Если не мешать эти три задачи в одну кучу - всё достаточно просто. Если необходимо совместно обрабатывать две и более области - надо аккуратно продумывать разные сценарии конкретных случаев. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2015, 17:32 |
|
Текущее время с сервера
|
|||
---|---|---|---|
#18+
Basil A. SidorovUTC позволяет хронологически упорядочить некоторую последовательность событий без всяких преобразований отметок "дата-время". Но существует ещё, как минимум две задачи: В этих двух задачах UTC скорее мешает. А хронологическое упорядочение надёжнее делается генераторами. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2015, 17:44 |
|
Текущее время с сервера
|
|||
---|---|---|---|
#18+
-,Поэтому у сервера должен быть указан рабочий пояс (должен браться либо из ОС, либо из конфига FB у сервера просто время должно быть в UTC. Уже который раз спрашиваю - зачем клиенту знать часовой пояс сервера? Клиенту надо знать свой часовой пояс (настоящий или фиктивный) и какой-нибудь "чужой" часовой пояс (сохраненный с временем другим коннектом). Опять повторю пример с гуглокалендарем. Я сижу в Москве, ГМТ+3. У меня по москве (гмт+3) вылет из Москвы в 12:00 и прилет в 15:00 в Прагу. В Праге локальное время ГМТ+2. Если я меняю СВОЕ время на ГМТ+2, я вижу, что я улетаю из Москвы в 11 часов, а прилетаю в Прагу в 14:00. Зачем мне тут время сервера гуглокарт, которые находятся вообще фиг знает где? Dimitry Sibiryakov1 - время 12:00, UTC+3 2 - время 12:00, UTC+4 а! да. но чем это отличается от неправильно установленного времени, вообще? Что с UTC, что без, неправильное время что на клиенте, что на сервере, будет все портить. Ivan_Pisarevsky доки могут проходить по любой из трех точек, надо получить, например, оборотную ведомость за 13 мая (например пять таки). По какому часовому поясу она должна быть? тут фокус вот в чем - 12 часов во Владике это вовсе не 12 часов в Москве, но относительно "рабочего дня" это именно одинаковое 12 часов. То есть, если мы хотим смотреть относительное значение, значит нам надо игнорировать таймзону. Если же нам нужно абсолютное время наступления события, то без таймзоны никак. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2015, 17:45 |
|
Текущее время с сервера
|
|||
---|---|---|---|
#18+
Hello, Kdv! You wrote on 1 июня 2015 г. 17:48:35: Kdv> у сервера просто время должно быть в UTC. Уже который раз спрашиваю - > зачем клиенту знать часовой пояс сервера?+1 не клиентово это дело. у Оракла клиент указывает свою TIME_ZONE. для того чтоб корректно трансформировать время сервера в локальное и обратно. где стоит сервер - в Аризоне, или в Цюрупинске - значения не имеет. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2015, 17:53 |
|
Текущее время с сервера
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovВ этих двух задачах UTC скорее мешает. А хронологическое упорядочение надёжнее делается генераторами.Уехал генеральный в командировку и решил поиграть в снабженца: зашёл в московский офис, сделал заказ, оформил доверенность на сотрудника и сказал, чтобы всё это распечатали и выдали во владивостокском офисе, куда через полчаса подойдёт "сотрудник из доверенности". Если потребуется предоставить подтверждение того, что сотрудник прокосячил и пришёл на три часа позже, то как мы привяжем генераторы к отметкам времени задним числом? Да, если нужна "монотонная последовательность", то целые числа из генераторов - то, что доктор прописал. Если нужна именно хронология, то на более-менее коротких интервалах лучше UTC пока ничего не придумано. Хотя есть два варианта записи: 1. UTC (HTTP) 2. Местное время и смещение от UTC (электронная почта). У обоих вариантов есть свои плюсы и минусы. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2015, 18:00 |
|
Текущее время с сервера
|
|||
---|---|---|---|
#18+
kdvа! да. но чем это отличается от неправильно установленного времени, вообще? Тем, что пользователь тычет в правый нижний угол экрана и на голубом глазу божится, что время у него на компьютере правильное. И даже часовой пояс может быть правильный. И даже автоматический переход на летнее время может быть не отключен. Но он будет упорно молчать о том, что время он таки ручками подвёл, поскольку мнение об этом переходе у его ОСи не совпадает с текущей линией партии. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2015, 18:03 |
|
Текущее время с сервера
|
|||
---|---|---|---|
#18+
Насчет примера с проводками во Владике-Москве-Калининграде: timestamp_TZ вполпинка перегоняется куда угодно, хоть в timestamp, хоть в другую таймзону. Например, cast aTimeTZ as timestamp (=time_UTC + TZ_Offset) либо aTimeTZ as time zone 'MSK' (=time_UTC + 'MSK'_TZ_Offset ). Так что не вижу тут проблемы, кроме организационной: решить, как именно делать подсчет, по календарю или по общей шкале. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2015, 18:04 |
|
Текущее время с сервера
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovНо он будет упорно молчать о том, что время он таки ручками подвёл, поскольку мнение об этом переходе у его ОСи не совпадает с текущей линией партии.Не надо рассматривать клинические случаи - всех не предусмотришь. Прислали UTC - смотрим разницу и посылаем всех, кто "сильно расходится", прислали местное время и смещение - привели к UTC и сравнили, прислали местное время и часовой пояс - посчитали смещение для часового пояса, опять привели к UTC и, таки, сравнили. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2015, 18:12 |
|
Текущее время с сервера
|
|||
---|---|---|---|
#18+
Basil A. SidorovХотя есть два варианта записи: 1. UTC (HTTP) 2. Местное время и смещение от UTC (электронная почта). У обоих вариантов есть свои плюсы и минусы. А есть третий вариант, UTC+смещение (как раз таки HTTP) - и он лишен всех минусов)) Тем, что пользователь тычет в правый нижний угол экрана и на голубом глазу божится, что время у него на компьютере правильное. И даже часовой пояс может быть правильный. И даже автоматический переход на летнее время может быть не отключен. Но он будет упорно молчать о том, что время он таки ручками подвёл, поскольку мнение об этом переходе у его ОСи не совпадает с текущей линией партии. С похожим успехом можно поменять в настройках локали разделитель десятичных на ~ и весело наблюдать, как валятся все StrToFloat без явного указания FormatSettings. В битве между гроздью проверочных условий и колхозным тюнингом ОС-ей всегда выиграет последний, ибо нездоровая фантазия юзверей безгранична ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2015, 18:14 |
|
Текущее время с сервера
|
|||
---|---|---|---|
#18+
Basil A. SidorovНе надо рассматривать клинические случаи - всех не предусмотришь. Ну да, не тебе же потом на саппорте сидеть... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2015, 18:15 |
|
Текущее время с сервера
|
|||
---|---|---|---|
#18+
kdvТо есть, если мы хотим смотреть относительное значение, значит нам надо игнорировать таймзону. Если же нам нужно абсолютное время наступления события, то без таймзоны никак.Вот именно, а в топике эти 2 направления рассуждений слиты в кучу, отчего нихрена не понятно кто и что хочет доказать оппонентам. kdvтут фокус вот в чем - 12 часов во Владике это вовсе не 12 часов в МосквеЕстественно я понимаю в чем фокус. Еще интересней 6 утра во владике. Моя мысль проста, пусть желающие новых фич на конкретном примере продемонстрируют как именно им может помочь новая фича сервера. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2015, 18:17 |
|
Текущее время с сервера
|
|||
---|---|---|---|
#18+
Fr0sT-BrutalА есть третий вариант, UTC+смещение (как раз таки HTTP) - и он лишен всех минусов))У любого варианта со смещением есть фундаментальный изъян: невозможно корректно сдвинуть отметку по временнОй шкале. Для такого сдвига требуется (именованный) часовой пояс. Ну и умение работать с базой часовых поясов . P.S. HTTP, таки - без смещения: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2015, 18:22 |
|
Текущее время с сервера
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovНу да, не тебе же потом на саппорте сидеть...Вот как раз недавно читал "слишком большая разница времени" в журнале блокированных пакетов ViPNet-а. И, что характерно, созвонились и поправили настройки у клиента. А несколько ранее подправил настройки и настроил синхронизацию на паре наших компов. Поэтому не надо рассказывать мне о тяжёлых буднях горячей линии вообще и сисадминов - в частности. Если косяки времени пофигу - можете делать что хотите, если синхронизация существенна - и на клиенте и на сервере должны быть правильными и мировое время и часовой пояс. Оба. На обоих узлах. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2015, 18:28 |
|
Текущее время с сервера
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakovkdvа! да. но чем это отличается от неправильно установленного времени, вообще? Тем, что пользователь тычет в правый нижний угол экрана и на голубом глазу божится, что время у него на компьютере правильное. И даже часовой пояс может быть правильный. И даже автоматический переход на летнее время может быть не отключен. Но он будет упорно молчать о том, что время он таки ручками подвёл, поскольку мнение об этом переходе у его ОСи не совпадает с текущей линией партии. сдается мне, что если ориентироваться на тех, кто делает неправильно, то и сам всё сделаешь неправильно ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2015, 22:05 |
|
Текущее время с сервера
|
|||
---|---|---|---|
#18+
Basil A. SidorovА несколько ранее подправил настройки и настроил синхронизацию на паре наших компов. Ну тогда ты должен бы представлять себе на что это будет похоже с миллионной-то user base... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2015, 22:11 |
|
Текущее время с сервера
|
|||
---|---|---|---|
#18+
Кто-нибудь может точно сказать сколько времени будет в Москве ровно через 2 года? Сколько будет в Лондоне сказать можно. А вот сколько будет в Москве - зависит от того будет ли через два года осуществляться перевод часов на летнее время, или нет. А это политический вопрос. Нам что нужно? 1. Хранить всё в UTC (имхо без смещения, т.е. в UTC+0). 2. Уметь задавать пояс сервера. Админу сервера может быть удобно: a) Использовать таймзону ОС. б) Использовать свою тайм-зону. Это чтобы отвязаться от настроек ОС. FB-инстансов на одном сервере может быть несколько, с разными настройками зон. в) Использовать для разных БД разные тайм-зоны. Это если у него на одном FB-сервере крутятся БД разных офисов (например Московский и Нью-Йоркский, и клиенские части программ соответственно всё видят по Москве или по Нью-Йорку (или как клиент захочет)). 3. Уметь отдавать время с сервера клиенту в удобной ему зоне. Разработчику порограммы может быть удобно: a) Видеть всё только в зоне сервера. б) Видеть всё только в зоне своей ОС. в) Видеть всё в указанной самим клиентом зоне (естественно что на каждый коннект она может быть своя). г) Иметь возможность менять рабочую зону без переконнекта. д) Иметь возможность указывать рабочую зону для конкретного запроса. 4. Правильно обрабатывать запросы типа: - ... where TimeStampField >= CURRENT_DATE(CLIENT_ZONE) -- чтобы получить записи за клиентское сегодня (клиентский пояс указывается в пункте 3) - ... where TimeStampField >= CURRENT_DATE(SERVER_ZONE) -- чтобы получить записи за серверное сегодня (серверный пояс указывается в пункте 2) - ... where TimeStampField >= CURRENT_DATE(+3) -- чтобы получить записи за (UTC+3)-шное сегодня. И много-много всего другого. Много писанины :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2015, 06:56 |
|
Текущее время с сервера
|
|||
---|---|---|---|
#18+
-Кто-нибудь может точно сказать сколько времени будет в Москве ровно через 2 года? Сколько будет в Лондоне сказать можно. А вот сколько будет в Москве - зависит от того будет ли через два года осуществляться перевод часов на летнее время, или нет. А это политический вопрос. Нам что нужно? 1. Хранить всё в UTC (имхо без смещения, т.е. в UTC+0). 2. Уметь задавать пояс сервера. Админу сервера может быть удобно: a) Использовать таймзону ОС. б) Использовать свою тайм-зону. Это чтобы отвязаться от настроек ОС. FB-инстансов на одном сервере может быть несколько, с разными настройками зон. в) Использовать для разных БД разные тайм-зоны. Это если у него на одном FB-сервере крутятся БД разных офисов (например Московский и Нью-Йоркский, и клиенские части программ соответственно всё видят по Москве или по Нью-Йорку (или как клиент захочет)). 3. Уметь отдавать время с сервера клиенту в удобной ему зоне. Разработчику порограммы может быть удобно: a) Видеть всё только в зоне сервера. б) Видеть всё только в зоне своей ОС. в) Видеть всё в указанной самим клиентом зоне (естественно что на каждый коннект она может быть своя). г) Иметь возможность менять рабочую зону без переконнекта. д) Иметь возможность указывать рабочую зону для конкретного запроса. 4. Правильно обрабатывать запросы типа: - ... where TimeStampField >= CURRENT_DATE(CLIENT_ZONE) -- чтобы получить записи за клиентское сегодня (клиентский пояс указывается в пункте 3) - ... where TimeStampField >= CURRENT_DATE(SERVER_ZONE) -- чтобы получить записи за серверное сегодня (серверный пояс указывается в пункте 2) - ... where TimeStampField >= CURRENT_DATE(+3) -- чтобы получить записи за (UTC+3)-шное сегодня. И много-много всего другого. Много писанины :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2015, 09:38 |
|
Текущее время с сервера
|
|||
---|---|---|---|
#18+
Basil A. SidorovУ любого варианта со смещением есть фундаментальный изъян: невозможно корректно сдвинуть отметку по временнОй шкале. Для такого сдвига требуется (именованный) часовой пояс. Ну и умение работать с базой часовых поясов . Ну да, и в советах по постгресу парень так и советует. Но это вполне можно даже зашить внутрь клиентской библиотеки. По крайней мере, проблемы варианта со смещением решаемы, а в ряде случаев даже вовсе отпадают за счет неиспользования таймзон и поголовного хранения в utc. Вариант же без смещения вообще слаб без привязки к локали. Это как строка без кодировки: вроде бы что-то внутри есть, но осмысленные данные достать затруднительно. P.S. HTTP, таки - без смещения: Твоя правда, попутал с XML датой. Кто-нибудь может точно сказать сколько времени будет в Москве ровно через 2 года? Сколько будет в Лондоне сказать можно. А вот сколько будет в Москве - зависит от того будет ли через два года осуществляться перевод часов на летнее время, или нет. А это политический вопрос. Сколько будет в Лондоне, сказать нельзя. Может, будет сдвиг тектонических плит, и UK переплывет в пояс GMT-1 :). И точно так же нельзя сказать про любую таймзону любой страны. Даже сама шкала UTC и то не является строго последовательной. Т.ч. с 100% надежностью можно рассчитывать интервалы только между датами в прошлом. 1. Хранить всё в UTC (имхо без смещения, т.е. в UTC+0). Имхо, перебор. Хотя пока не могу придумать пример необходимости хранения смещения. 2. Уметь задавать пояс сервера Зачем? Чтобы опять иметь гемор со сменами поясов или летним временем, как в начале топика? Да еще и плодить сущности: тут у нас в конфиге +3, вон там - +3.5, а тут +4, это типа летнее время, но зимой я забыл обновить конфиг. 3. Уметь отдавать время с сервера клиенту в удобной ему зоне. Разработчику порограммы может быть удобно: a) Видеть всё только в зоне сервера. б) Видеть всё только в зоне своей ОС. в) Видеть всё в указанной самим клиентом зоне (естественно что на каждый коннект она может быть своя). г) Иметь возможность менять рабочую зону без переконнекта. д) Иметь возможность указывать рабочую зону для конкретного запроса. а - Зачем? б, в, г, д - разумеется. 4. Правильно обрабатывать запросы типа: - ... where TimeStampField >= CURRENT_DATE(CLIENT_ZONE) -- чтобы получить записи за клиентское сегодня (клиентский пояс указывается в пункте 3) - ... where TimeStampField >= CURRENT_DATE(SERVER_ZONE) -- чтобы получить записи за серверное сегодня (серверный пояс указывается в пункте 2) - ... where TimeStampField >= CURRENT_DATE(+3) -- чтобы получить записи за (UTC+3)-шное сегодня. 1 - можно делать по умолчанию при получении типа timestamp (в случае, если по примеру Постгреса добавлять тип timestampTZ, а не заменять timestamp) 2 - в 3й раз, зачем? 3 - разумеется; только вот, имхо, надо заранее и жестко обрубить возможность задавать смещение числом. Потому что это сегодня +3. А завтра будет +4. А сегодня, но в соседнем городе, куда прогу перенесли на флешке, - +5. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2015, 09:59 |
|
Текущее время с сервера
|
|||
---|---|---|---|
#18+
Секретное имя пользователяИнтересно еще рассмотреть вариант, когда мы сегодня записали время UTC, завтра попросили у сервера, передав ему смещение. Всё хорошо. Через некоторое кол-во лет наш часовой пояс сменился. Мы снова попросили данные за тот период, передав уже новое смещение и получили фигню-с. Впрочем, это проблемы клиента, пусть записывает и UTC, и локальное время, если ему нужны запросы по локальному. Именно поэтому базы таймзон хранят не только текущее состояние, но и всю историю изменений. И именно поэтому зашивать в запрос константное смещение - опасно. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.06.2015, 10:01 |
|
|
start [/forum/topic.php?fid=40&msg=38973978&tid=1562795]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
others: | 296ms |
total: | 450ms |
0 / 0 |