Python-使用strftime将python datetime转换为纪元

发布于 2021-02-02 23:17:36

我在UTC有一个时间,我想要从纪元开始经过的秒数。

我正在使用strftime将其转换为秒数。以2012年4月1日为例。

>>>datetime.datetime(2012,04,01,0,0).strftime('%s')
'1333234800'

从纪元开始的UTC时间为2012年4月1日,但上述时间返回1333234800,相差1小时。

因此,看来strftime正在考虑我的系统时间,并在某处应用了时区偏移。我以为日期时间纯粹是天真的?

我该如何解决?如果可能的话,除非标准,否则避免导入其他库。(我有可移植性问题)。

关注者
0
被浏览
95
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    如果要将python日期时间转换为自纪元以来的秒数,则可以明确地执行以下操作:

    >>> (datetime.datetime(2012,04,01,0,0) - datetime.datetime(1970,1,1)).total_seconds()
    1333238400.0
    

    在Python 3.3+中,你可以timestamp()改用:

    >>> datetime.datetime(2012,4,1,0,0).timestamp()
    1333234800.0
    

    为什么不应该使用 datetime.strftime('%s')

    Python实际上并不支持%s作为strftime的参数(如果你不在http://docs.python.org/library/datetime.html#strftime-and-strptime-behavior中查看,则不在列表中),唯一之所以起作用,是因为Python会将信息传递到使用本地时区的系统的strftime中。

    >>> datetime.datetime(2012,04,01,0,0).strftime('%s')
    '1333234800'
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看