当前位置: 首页 > 知识库问答 >
问题:

将蟒蛇日期时间转换为具有 strftime 的纪元

常永长
2023-03-14

我有一个UTC时间,我想知道从epoch开始的秒数。

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

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

2012年4月1日,来自epoch的UTC为1333238400,但上面返回的是1333234800,相差1小时。

因此,看起来strftime正在考虑我的系统时间,并在某个地方应用时区偏移。我以为约会时间纯粹是天真的?

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

共有3个答案

皇甫建木
2023-03-14
import time
from datetime import datetime
now = datetime.now()

time.mktime(now.timetuple())
澹台举
2023-03-14

我对时区之类的东西有严重的问题。Python处理所有这些事情的方式非常令人困惑(对我来说)。使用日历模块似乎一切正常(参见链接1、2、3和4)。

>>> import datetime
>>> import calendar
>>> aprilFirst=datetime.datetime(2012, 04, 01, 0, 0)
>>> calendar.timegm(aprilFirst.timetuple())
1333238400
唐弘厚
2023-03-14

如果你想将python日期时间转换为自epoch以来的秒数,你可以明确地这样做:

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

在Python 3.3中,您可以改用timemark()

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

为什么不应使用< code > datetime . strftime(' % s ')

Python实际上不支持%s作为strftime的参数(如果您在http://docs.python.org/library/datetime.html#strftime-和strptime行为(它不在列表中),它工作的唯一原因是Python将信息传递给系统的strftime,它使用您的本地时区。

>>> datetime.datetime(2012,04,01,0,0).strftime('%s')
'1333234800'
 类似资料:
  • 我想把两次加在一起。国际标准化组织 有什么建议吗?

  • 上下文是,我们的产品中有一个现有的应用程序,它生成并向现有的oracle过程发送纪元号&反之亦然。它在该过程中使用如下内容 当我尝试这些查询时,它对我也适用于Oracle10g服务器(如果有关系的话,还有Oracle sql Developer4.x)。 在现有的过程中,要求将值保存为日期本身(时间组件与日期无关),但是在新的要求中,我必须将unix EPOCH值转换为日期时间(小时/分钟/秒级别

  • 问题内容: 我已经多次看到这个问题,似乎没有答案是我需要的。 我有一个长类型变量,其中存储了一个纪元时间。 我想做的就是将其转换为字符串 例如,如果存储的纪元时间是今天,那么最后的字符串将显示为: 2012年3月17日 我将如何处理? 问题答案: 看看SimpleDateFormat

  • 问题内容: 我目前在使用Python时遇到问题。我有一个Pandas DataFrame,列之一是带有日期的字符串。格式为: “%Y-%m-%d%H:%m:00.000”。例如:“ 2011-04-24 01:30:00.000” 我需要将整列转换为整数。我尝试运行此代码,但是它非常慢,并且有几百万行。 你们知道如何将整个列转换为纪元时间吗? 提前致谢 ! 问题答案: 将字符串转换为using ,

  • 我试图编写一个SQL表达式,该表达式将在特定时区将unix历元(1970/1/1以来的秒)转换为本地时间,并从中提取小时值。在研究了这段时间的解决方案后,我仍然不确定如何处理时区。注意,我尽量避免使用NEW_TIME()函数,因为它只使用时区缩略词的有限子集,而不使用全时区名称。 结果是 结果有几个问题 第1列:从时间戳开始,该值比使用日期关闭1小时 第2列:在America/los_Angele

  • 问题内容: 我在UTC有一个时间,我想要从纪元开始经过的秒数。 我正在使用strftime将其转换为秒数。以2012年4月1日为例。 从纪元开始的UTC时间为2012年4月1日,但上述时间返回1333234800,相差1小时。 因此,看来strftime正在考虑我的系统时间,并在某处应用了时区偏移。我以为日期时间纯粹是天真的? 我该如何解决?如果可能的话,除非标准,否则避免导入其他库。(我有可移植