Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 11, 2017 07:20:28

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9726
Репутация: +  843  -
Профиль   Отправить e-mail  

Стоит ли читать "Fluent Python" после Лутца?

FishHook
Поэтому, когда для отображения времени в разных таймзонах, ты изменяешь количество миллисекунд, ты совершаешь ошибку, ты буквально изменяешь время, о чем тебя не просили.
Я беру миллисекунды в UTC и изменяю их. А делаю я это для того, чтобы фоновые функции, преобразующие миллисекунды в дату, могли учесть високосный год и переходы на зимнее/летнее время. Таймзона начинает работать только после того, как основное время выяснено, и отсчитывается от него.

FishHook
Поэтому в каком формате ты не передавай дату с сервера, ЖС создаст дату в таймзоне браузера.
Но в такой дате есть как методы получения часов/дней в таймзоне, так и методы получения часов/дней в UTC, которые для всех таймзон одинаковые.

FishHook
Но теперь мне надо заняться переводом московского времени в якутское!
Ты передаёшь всё в UTC и только при принятии переводишь в свою таймзону. Это то же самое, что с эндианством, - для передачи выбирается определённый формат (big-endian), а потом на концах преобразуется в соотвествии с архитектурами.

Не надо время передавать в таймзоне; надо время передавать в UTC.

FishHook
Но и хрен бы с ним, но если я поступлю по твоей методе, просто возьму и прихреначу пару часов к дате, то я получу другое время
Даже преобразовывать ничего не надо. Ты принял в UTC и можешь не преобразовывать его. Оно само отобразится в таймзоне, взятой с компа.

Ты просил все часовые пояса вывести - я тебе вывел. Может, там плюс/минус надо использовать (я точно не помню), но это не суть, так как сводится к подравниванию массива чисел.

FishHook
либо придется заниматься какими-то преобразованиями до отправки.
В UTC он должен отправить. Если он попадёт в будущее - это его проблемы. Не надо было менять время. У него, на его стороне должен стоять предохранитель от этого.

FishHook
Это смещение времени, привязанное к географическим координатам и времени абсолютному.
Часовых поясов определённое количество и они делятся равномерно. Точка отсчёта - нулевой меридиан в Лондоне.

FishHook
Если ты думаешь, что на этом нельзя потерять солидно денежек, ты ошибаешься.
Нужно выбрать стабильную точку отсчёта. Миллисекунды в UTC - что может быть стабильнее?

FishHook
Ты ошибся на три часа!
Я не мог ошибиться, потому что это доказывается индуктивно. То есть мы можем доказать, что: 1) малое элементарное расстояние в миллисекундах соответствует правильному ответу; 2) прибавление к малому расстоянию в миллисекундах ещё шага в миллисекундах также соответствует правильному ответу; 3) мы можем индуктивно расширить шаг индукции и доказать для любого расстояния в миллисекундах, что оно соответствует правильному ответу.

Сместись на миллисекунду назад (возьми такой часовой пояс шириной в миллисекунду) и спроси себя “правильно ли то, что в часовом поясе, лежащем в миллисекунде назад, сейчас столько времени, сколько сейчас и в этом часовом поясе без вычета одной миллисекунды?”. Понимаешь, тут к бабке не ходи, уже всё понятно. Ты просто заморочился в таймзонах, тогда как я их вообще не использовал, взяв время в UTC.



Отредактировано py.user.next (Окт. 11, 2017 07:38:58)

Офлайн

#2 Окт. 11, 2017 07:42:37

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Стоит ли читать "Fluent Python" после Лутца?

Ты слушаешь меня вообще или нет?

py.user.next
Оно само отобразится в таймзоне, взятой с компа.
Мне нах…й не нужна таймзона, взятая с компа, мне нужна таймзона Петропавловска-Камчатского, когда я нахожусь в Калининграде. Слишком сложная концепция что ли?

Я не мог ошибиться

А кто ж тогда ошибся то? Расскажи почему твои вычисления на три часа не совпадают с вычислениями питона. Питон неправильный? Закапываем его?



Офлайн

#3 Окт. 11, 2017 07:56:33

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9726
Репутация: +  843  -
Профиль   Отправить e-mail  

Стоит ли читать "Fluent Python" после Лутца?

FishHook
мне нужна таймзона Петропавловска-Камчатского, когда я нахожусь в Калининграде
Ну распечатай себе все таймзоны относительно UTC, назначь им имена и пользуйся. Я сложности вообще не вижу.

FishHook
 now = datetime.datetime.utcnow().replace(tzinfo=pytz.UTC).astimezone(pytz.timezone("Europe/Moscow"))
Вот здесь ты намудрил что-то. Да и гарантии нет, что питон правильно вычисляет такие моменты. Я участвовал в исправлении нескольких багов таких (ну не кодом помогал, а анализом поведения) и были у них подобные проблемы, только там с классификацией юникодовых символов дело было. Так что то, что он может неправильно что-то считать, для меня - обычное дело, особенно если вещь специфическая.
В питоне в UTC через timedelta я проверял (на всякий случай), перед тем как сюда JavaScript-код отправлять.



Отредактировано py.user.next (Окт. 11, 2017 07:57:46)

Офлайн

#4 Окт. 11, 2017 08:21:06

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Стоит ли читать "Fluent Python" после Лутца?

py.user.next
Ну распечатай себе все таймзоны относительно UTC
Типа такого?

Офлайн

#5 Окт. 11, 2017 08:27:42

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Стоит ли читать "Fluent Python" после Лутца?

py.user.next
Ну распечатай себе все таймзоны относительно UTC, назначь им имена и пользуйся. Я сложности вообще не вижу.

Новичков за подобные умопостроения я баню за тупость.



Офлайн

#6 Окт. 11, 2017 08:29:54

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9726
Репутация: +  843  -
Профиль   Отправить e-mail  

Стоит ли читать "Fluent Python" после Лутца?

Shaman
Типа такого?
Они ещё могут меняться во времени. Могут условно меняться, могут физически меняться. У нас вот землетрясение было лет 10 назад, так появилась суша +100 метров (поднялась из воды и осталась).

FishHook
Новичков за подобные умопостроения я баню за тупость.
Я не имел в виду бумагу.



Отредактировано py.user.next (Окт. 11, 2017 08:30:45)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version