tag:blogger.com,1999:blog-824928856526666223.post4102790100762559946..comments2022-11-30T10:25:30.656+02:00Comments on Андрей Светлов: Питон: времена, даты и временные зоныAndrew Svetlovhttp://www.blogger.com/profile/08716418137388253439noreply@blogger.comBlogger16125tag:blogger.com,1999:blog-824928856526666223.post-45935803582206794052019-05-26T05:22:09.847+03:002019-05-26T05:22:09.847+03:00Спасибо, полезная, структурированная информацияСпасибо, полезная, структурированная информацияAnonymoushttps://www.blogger.com/profile/12212692951436880266noreply@blogger.comtag:blogger.com,1999:blog-824928856526666223.post-16948153636533535902012-08-13T00:44:03.854+03:002012-08-13T00:44:03.854+03:00Тогда внимательно следите, чтобы «относительные ut...Тогда внимательно следите, чтобы «относительные utc» не перемешались случайно с «относительными локальными». Python вас не сможет предупредить в этом случае. <br />Про pickle. <br />Размер чуть больше — но я бы не стал на этом зацикливаться. pickle изначально не был предназначен для экономии места, если оно важно — берите другой сериализатор.<br />То, что кривой объект timezone может поломать pickle — просто общее место. Любой кривой объект может поломать. С другой стороны, pytz, например, не ломает — так что возражение по меньшей мере странное.Andrew Svetlovhttps://www.blogger.com/profile/08716418137388253439noreply@blogger.comtag:blogger.com,1999:blog-824928856526666223.post-33208045000005459082012-08-12T22:09:54.328+03:002012-08-12T22:09:54.328+03:00Для меня «относительное» в utc как-то проще выгляд...Для меня «относительное» в utc как-то проще выглядит. И как-то приятнее строго отелить внутренний формат по типу времени, и только с ним работать. Например, .time() и .date() будут иметь разный смысл, если объекты вдруг окажутся с разными временными зонами. Армин ещё пиклы упоминает. Хотя возможно это мелочи на практике.Anonymoushttps://www.blogger.com/profile/00660412760395445440noreply@blogger.comtag:blogger.com,1999:blog-824928856526666223.post-34576468018532356382012-08-11T18:06:17.545+03:002012-08-11T18:06:17.545+03:00На самом деле разница небольшая.
Я предлагаю испол...На самом деле разница небольшая.<br />Я предлагаю использовать абсолютное время.<br />Армин предпочитает относительное время, рассматривая его исключительно как utc.<br />Работают оба метода. Мне комфортней абсолютное время, но это не принципиально.Andrew Svetlovhttps://www.blogger.com/profile/08716418137388253439noreply@blogger.comtag:blogger.com,1999:blog-824928856526666223.post-139671456040786872012-08-11T17:39:05.166+03:002012-08-11T17:39:05.166+03:00Хм, у Армина Ронашера отчасти другие выводы с точк...Хм, у Армина Ронашера отчасти другие выводы с точки зрения Best Practice.. идея принимать «относительное» время исключительно как UTC довольно красивая. Но статьи друг друга дополняют, спасибо огромное!Anonymoushttps://www.blogger.com/profile/00660412760395445440noreply@blogger.comtag:blogger.com,1999:blog-824928856526666223.post-10981276357736803602012-08-01T11:22:14.658+03:002012-08-01T11:22:14.658+03:00Да, вместо «времени по Гринвичу» более корректно у...Да, вместо «времени по Гринвичу» более корректно употреблять UTC.Andrew Svetlovhttps://www.blogger.com/profile/08716418137388253439noreply@blogger.comtag:blogger.com,1999:blog-824928856526666223.post-7178381797051494012012-08-01T09:35:54.423+03:002012-08-01T09:35:54.423+03:00"Это наши привычные смещения относительно вре..."Это наши привычные смещения относительно времени по Гринвичу. Например, в моём Киеве локальное время отличается на +2 часа (летом +3)"<br />Скорее, тут стоит говорить о всемирном координированном времени (UTC), ведь если сравнить время в GB и UA - будет постоянно +2, поэтому в некоторых источниках Киев указывается как GMT+2. В то же время, от UTC как раз зимой два часа, а летом три.Anonymoushttps://www.blogger.com/profile/17758526822513273658noreply@blogger.comtag:blogger.com,1999:blog-824928856526666223.post-5974214336000139372012-06-05T11:54:22.794+03:002012-06-05T11:54:22.794+03:00Nice article! Thanks for sharing.Nice article! Thanks for sharing.outsourcing service indonesiahttp://www.jac-outsourcing.comnoreply@blogger.comtag:blogger.com,1999:blog-824928856526666223.post-34410101354330323922011-02-28T21:22:01.902+02:002011-02-28T21:22:01.902+02:00Ааа, вот о чем речь!
Да, в случае приема времени и...Ааа, вот о чем речь!<br />Да, в случае приема времени из веб формы использование pytz звучит разумно. Временная зона пользователя, как я понимаю, задается в настройках?<br /><br />Наверное, все же лучше еще в браузере формировать дату в виде 2011-02-28T21:19+02:00 если это возможно.<br /><br />Моя главная претензия к .localize именно та, что далеко не все объекты tzinfo этот .localize имеют.Andrew Svetlovhttps://www.blogger.com/profile/08716418137388253439noreply@blogger.comtag:blogger.com,1999:blog-824928856526666223.post-63759163478236226352011-02-28T20:59:17.702+02:002011-02-28T20:59:17.702+02:00Мы может не совсем друг друга поняли, но представи...Мы может не совсем друг друга поняли, но представим себе получение datetime через web форму. Мы получаем его без указания таймзоны, но знаем зону пользователя.<br /><br />Получаем зону от pytz, и ей уже обрабатываем время, чтобы из него можно было получить utc.<br /><br />Есть другой вариант?<br /><br />is_dst конечно проблема, но эта проблема не pytz, а более общая.Deepwalkerhttps://www.blogger.com/profile/11174389329305818117noreply@blogger.comtag:blogger.com,1999:blog-824928856526666223.post-3270804113522904272011-02-28T16:10:04.583+02:002011-02-28T16:10:04.583+02:00Deepwalker, категорически не согласен.
Во первых, ...Deepwalker, категорически не согласен.<br />Во первых, .localize - специфический для pytz метод. В других библиотеках, реализующих временные зоны, его нет.<br /><br />datetime.astimezone есть всегда, и всегда работает правильно (для pytz tzino.utcoffset вызовет тот самый .localize).<br /><br />Во вторых, в "правильной" программе нет нужды преобразовывать локальное относительное время через pytz. Потому что его просто неоткуда взять - база данных и прочее окружение отдает utc, для которого replace вполне оправдан. <br /><br />Как мне кажется, стоит избегать получения naive local time и преобразования их в pytz.localize. К тому же уходим от очень запутанного вопроса: is_dst в .localize должен быть True или False? pytz сам его не угадывает.Andrew Svetlovhttps://www.blogger.com/profile/08716418137388253439noreply@blogger.comtag:blogger.com,1999:blog-824928856526666223.post-75720339443551179742011-02-28T15:54:12.126+02:002011-02-28T15:54:12.126+02:00Тьфу. Конечно, naive. В общем, мы друг друга понял...Тьфу. Конечно, naive. В общем, мы друг друга поняли.Andrew Svetlovhttps://www.blogger.com/profile/08716418137388253439noreply@blogger.comtag:blogger.com,1999:blog-824928856526666223.post-7963883198238184452011-02-28T14:37:11.472+02:002011-02-28T14:37:11.472+02:00> Насколько помню, в документации явно говорило...> Насколько помню, в документации явно говорилось что aware - это datetime и time без tzinfo или если tzinfo.utcoffset(...) возвращает None.<br /><br />Это как раз naive вроде:<br /><br /><i>An object d of type time or datetime may be naive or aware. d is aware if d.tzinfo is not None and d.tzinfo.utcoffset(d) does not return None. If d.tzinfo is None, or if d.tzinfo is not None but d.tzinfo.utcoffset(d) returns None</i><br /><br />> Или имел в виду нечто совсем иное?<br /><br />Не. Я просто не до конца сразу вспомнил терминологию.Александр Кошелевhttps://www.blogger.com/profile/05239837405197983945noreply@blogger.comtag:blogger.com,1999:blog-824928856526666223.post-152018691075790962011-02-27T23:58:04.335+02:002011-02-27T23:58:04.335+02:00Я бы хотел дополнить, что с зонами из pytz нельзя ...Я бы хотел дополнить, что с зонами из pytz нельзя делать так - naive_time.replace(tzinfo=localtz).<br />Надо делать localtz.localize(naive_time).Deepwalkerhttps://www.blogger.com/profile/11174389329305818117noreply@blogger.comtag:blogger.com,1999:blog-824928856526666223.post-45173118297901995002011-02-27T22:31:09.433+02:002011-02-27T22:31:09.433+02:00Спасибо, Александр.
Задумался.
Насколько помню, ...Спасибо, Александр.<br /><br />Задумался.<br /><br />Насколько помню, в документации явно говорилось что aware - это datetime и time без tzinfo или если tzinfo.utcoffset(...) возвращает None.<br /><br />Как мне кажется, определение однозначное. <br /><br />timezone, которые не знают utcoffset не имеют смысла вообще.<br /><br />Считаешь, что это нужно отдельно уточнить в тексте?<br /><br />Или имел в виду нечто совсем иное?Andrew Svetlovhttps://www.blogger.com/profile/08716418137388253439noreply@blogger.comtag:blogger.com,1999:blog-824928856526666223.post-37658692708812677842011-02-27T22:09:45.854+02:002011-02-27T22:09:45.854+02:00Хорошая статья, Андрей!
У меня только вызвала воп...Хорошая статья, Андрей!<br /><br />У меня только вызвала вопрос терминология -- абсолютное время это просто aware или всё-таки timezone aware?Александр Кошелевhttps://www.blogger.com/profile/05239837405197983945noreply@blogger.com