Deutsch English Français Italiano |
<u3reda$291m$1@cabale.usenet-fr.net> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!eternal-september.org!news.eternal-september.org!news.gegeweb.eu!gegeweb.org!usenet-fr.net!.POSTED!not-for-mail From: Olivier Miakinen <om+news@miakinen.net> Newsgroups: fr.comp.lang.python Subject: =?UTF-8?Q?Re:_datetime_:_passer_d'=c2=ab_offset-naive_=c2=bb_=c3=a0?= =?UTF-8?Q?_=c2=ab_offset-aware_=c2=bb?= Date: Sun, 14 May 2023 21:56:26 +0200 Organization: There's no cabale Lines: 36 Message-ID: <u3reda$291m$1@cabale.usenet-fr.net> References: <u3rcqv$28fu$1@cabale.usenet-fr.net> NNTP-Posting-Host: 200.89.28.93.rev.sfr.net Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 8bit X-Trace: cabale.usenet-fr.net 1684094186 74806 93.28.89.200 (14 May 2023 19:56:26 GMT) X-Complaints-To: abuse@usenet-fr.net NNTP-Posting-Date: Sun, 14 May 2023 19:56:26 +0000 (UTC) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0 SeaMonkey/2.49.4 In-Reply-To: <u3rcqv$28fu$1@cabale.usenet-fr.net> Bytes: 2391 Re-bonjour, Le 14/05/2023 21:29, Olivier Miakinen a �crit : > > Je voudrais pouvoir comparer en python des dates de courriels, au format d�fini > par le RFC2822. Pour cela, j'utilise la fonction parsedate_to_datetime() qui est > d�finie dans le module email.utils : > > from email.utils import parsedate_to_datetime > date = parsedate_to_datetime("Sat, 13 May 2023 12:00:00 +0200") > > [...] comment d�tecter qu'un datetime n'a pas de tzinfo, et dans > ce cas seulement lui coller le tzinfo=datetime.timezone.utc ? Ou bien, autre > solution, est-ce que je peux remplacer parsedate_to_datetime() par une fonction > qui d�finirait bien le tzinfo dans tous les cas ? Bon, RTFM comme on dit, j'ai lu le manuel et j'arrive � �a : =============================================================== from email.utils import parsedate_to_datetime from datetime import datetime, timezone def my_parsedate(rfc2822_date): d = parsedate_to_datetime(rfc2822_date) if (d.tzinfo is None) or (d.tzinfo.utcoffset(d) is None): # d is a naive timedate, make it aware d = datetime.combine(d.date(), d.time(), timezone.utc) return d =============================================================== Est-ce que �a vous semble correct ? Et si m�me �a l'est, y aurait-il mieux ? Cordialement, -- Olivier Miakinen