[issue41118] datetime object does not preserve POSIX timestamp

2020-06-25 Thread Paul Ganssle


Paul Ganssle  added the comment:

There's a pretty clear warning on the documentation that utcfromtimestamp is 
unsuitable for this purpose: 
https://docs.python.org/3/library/datetime.html#datetime.datetime.utcfromtimestamp

What you want is a datetime that knows what time zone it's in, so that it can 
be translated back into the absolute number of seconds since UTC. The correct 
way to do that is to tell the datetime it's in UTC by attaching the 
`datetime.timezone.utc` object (or any equivalent `tzinfo`).

I have written a blog post explaining in detail why you should not use `utcnow` 
or `utcfromtimestamp`: https://blog.ganssle.io/articles/2019/11/utcnow.html

Hopefully that is helpful to you.

--
resolution:  -> not a bug
stage:  -> resolved
status: open -> closed

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue41118] datetime object does not preserve POSIX timestamp

2020-06-25 Thread Karthikeyan Singaravelan


Change by Karthikeyan Singaravelan :


--
nosy: +belopolsky, p-ganssle

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com



[issue41118] datetime object does not preserve POSIX timestamp

2020-06-25 Thread Grant Petty


New submission from Grant Petty :

For complete context, see 
https://stackoverflow.com/questions/62582386/how-do-i-get-a-naive-datetime-object-that-correctly-uses-utc-inputs-and-preserve

Short version: It does not seem correct that a datetime object produced *from* 
a POSIX timestamp using utcfromtimestamp should then return a different 
timestamp.  As a user, I would like to be able to count on the POSIX timestamp 
as being the one conserved property of a datetime object, regardless of whether 
it is naive or time zone aware.

> dt0 = dt.datetime(year=2020, month=1, day=1,hour=0,minute=0, tzinfo=pytz.utc)
> print(dt0)

2020-01-01 00:00:00+00:00

> ts0 = dt0.timestamp()
> print(ts0)

1577836800.0

> dt1 = dt.datetime.utcfromtimestamp(ts0)
> print(dt1)

2020-01-01 00:00:00

> ts1 = dt1.timestamp()
> print(ts1)

1577858400.0

--
messages: 372387
nosy: gpetty
priority: normal
severity: normal
status: open
title: datetime object does not preserve POSIX timestamp
type: behavior
versions: Python 3.7

___
Python tracker 

___
___
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com