为什么python datetime类有一个';fromtimestamp';方法,但不是a';totimestamp';方法?

为什么python datetime类有一个';fromtimestamp';方法,但不是a';totimestamp';方法?,python,datetime,timestamp,Python,Datetime,Timestamp,Python的datetime类有一个fromtimestamp方法从时间戳创建datetime对象,但没有提供另一种方法的totimestamp方法。。。 我知道,使用类似于time.mktime(x.timetuple())的东西,可以将datetime对象转换为时间戳,但这对我来说似乎不太复杂,所以我很好奇为什么没有totimestamp方法?我确实记得这件事的一点,而我以前一直在想这件事。长话短说:已经提出了很多建议,但出于某种原因,没有一个被接受 我认为这一点最好概括为: 许多人提出了

Python的
datetime
类有一个
fromtimestamp
方法从时间戳创建
datetime
对象,但没有提供另一种方法的
totimestamp
方法。。。 我知道,使用类似于
time.mktime(x.timetuple())
的东西,可以将
datetime
对象转换为时间戳,但这对我来说似乎不太复杂,所以我很好奇为什么没有
totimestamp
方法?

我确实记得这件事的一点,而我以前一直在想这件事。长话短说:已经提出了很多建议,但出于某种原因,没有一个被接受

我认为这一点最好概括为:

许多人提出了令人满意的解决办法。没有人能想出一个令你满意的解决方案,因为你对这个问题控制过度了。经过这么多年,我们仍然没有UTCtromTimestamp()的原因是,据我所知,只有你一个人拒绝接受在其工作范围内以微秒精度反转utcfromtimestamp()的方法。这种方法是一种完全合理且可接受的解决方案,它将为Python作为一种语言增加很多价值

我怀疑您没有意识到,您一手阻止了这个问题的进展,无意中给Python用户造成了多大的痛苦。我见过他们:学生、朋友、同事——即使是非常聪明和有能力的人也会受到影响。没有人想到查看日历模块。也许如果你看到他们中的一些人为此挣扎,你就会明白

这个故事的最终结果是关于如何自己做:

# On the POSIX compliant platforms, `utcfromtimestamp(timestamp)` is
# equivalent to the following expression:
datetime(1970, 1, 1) + timedelta(seconds=timestamp)

# There is no method to obtain the timestamp from a `datetime` instance,
# but POSIX timestamp corresponding to a `datetime` instance `dt` can be
# easily calculated as follows. For a naive `dt`:
timestamp = (dt - datetime(1970, 1, 1)) / timedelta(seconds=1)

# And for an aware ``dt``::
timestamp = (dt - datetime(1970, 1, 1, tzinfo=timezone.utc)) / timedelta(seconds=1)

另请参见@Sven:我的问题不是询问转换方法,而是想知道
datetime
模块中缺少此类方法的原因……我没有说这是重复的。我只是链接了相关信息,这对从谷歌点击这个页面的人来说总是很有用的。