我有一堆datetime对象,我想为每个对象计算从过去的固定时间(例如从1970年1月1日以来)开始的秒数。

import datetime
t = datetime.datetime(2009, 10, 21, 0, 0)

这似乎只是区分有不同日期的日期:

t.toordinal()

如何将datetime对象转换为秒?


当前回答

来自python文档:

timedelta.total_seconds()

返回持续时间中包含的总秒数。相当于

(td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / 10**6

启用真除法时计算。

注意,对于非常大的时间间隔(在大多数平台上超过270年),这种方法将失去微秒精度。

此功能是2.7版中的新功能。

其他回答

来自python文档:

timedelta.total_seconds()

返回持续时间中包含的总秒数。相当于

(td.microseconds + (td.seconds + td.days * 24 * 3600) * 10**6) / 10**6

启用真除法时计算。

注意,对于非常大的时间间隔(在大多数平台上超过270年),这种方法将失去微秒精度。

此功能是2.7版中的新功能。

从Python 3.3开始,使用datetime.timestamp()方法,这变得超级简单。当然,这只在您需要1970-01-01 UTC的秒数时才有用。

from datetime import datetime
dt = datetime.today()  # Get timezone naive now
seconds = dt.timestamp()

返回值将是一个浮点数,表示秒的几分之一。如果datetime是无时区的(如上例所示),则假定datetime对象表示本地时间,即从您所在位置的当前时间到UTC 1970-01-01的秒数。

在python 3中,以毫秒为单位计算一个代码块的处理时间的标准方法。X表示:

import datetime

t_start = datetime.datetime.now()

# Here is the python3 code, you want 
# to check the processing time of

t_end = datetime.datetime.now()
print("Time taken : ", (t_end - t_start).total_seconds()*1000, " ms")
import datetime
import math


def getSeconds(inputDate):
    time = datetime.date.today().strftime('%m/%d/%Y')
    date_time = datetime.datetime.strptime(time, '%m/%d/%Y')
    msg = inputDate
    props = msg.split(".")
    a_timedelta = datetime.timedelta
    if(len(props)==3):
        a_timedelta = date_time - datetime.datetime(int(props[0]),int(props[1]),int(props[2]))
    else:
        print("Invalid date format")
        return
    seconds = math.trunc(a_timedelta.total_seconds())
    print(seconds)
    return seconds

例子getSeconds(“2022.1.1”)

获取Unix时间(从1970年1月1日开始的秒数):

>>> import datetime, time
>>> t = datetime.datetime(2011, 10, 21, 0, 0)
>>> time.mktime(t.timetuple())
1319148000.0