python - 如何在 python 中将 DateTime 对象转换为小时数?

标签 python python-3.x datetime

我正在尝试减去分隔列表中包含的日期值并仅存储小于 24 小时的结果并将它们转换为小时。这是我到目前为止的代码:

#stored lists of dates

closure_date = ['2017-06-13 11:00:00', '2017-06-09 11:00:00', '2017-06-02 11:00:00']
opening_date = ['2017-06-13 05:00:00', '2017-06-09 05:00:00', '2017-06-02 05:00:00']

results = []

#Subtract the dates
results.append([datetime.strptime(c,'%Y-%m-%d %H:%M:%S') - datetime.strptime(o,'%Y-%m-%d %H:%M:%S') for c, o in zip(closure, opening) if datetime.strptime(c,'%Y-%m-%d %H:%M:%S') - datetime.strptime(o,'%Y-%m-%d %H:%M:%S')<timedelta(hours=24)])

我得到的结果是一个双列表,其结果以秒格式小于 24 小时。

[[datetime.timedelta(0, 21600), datetime.timedelta(0, 21600)]]

我尝试的一种方法是从结果列表中获取那些秒数,然后将每个结果除以 3600 以获得小时格式,类似于:

for r in results:
    hour.append(r.datetime.timedelta(days=1).total_seconds()/3600)

但这是不可能的,因为我收到错误 AttributeError: 'list' object has no attribute 'datetime' 这是合理的,因为结果在双列表中,我需要另一个索引来从最内层的列表中提取每个结果,IMO 操作起来并不简单,我相信有更好的方法来实现这个目标。

如何以更好和更简单的方式从双重列表中获取秒数到小时数,以便稍后进行其他算术计算?

最佳答案

这里发生了一些事情。

首先,您将获得一个列表的列表,因为您正在使用 append(),它将一个项目添加到列表中。在这种情况下,该项目本身就是一个列表:您的列表理解的结果。如果您不想这样做,而只是想将可迭代对象的项目添加到列表中,您应该使用 extend()。但是,由于您正在使用列表理解来创建列表([for ... in ...if...]),您应该更改代码以摆脱

results = []

简单地做

#Subtract the dates
results = [datetime.strptime(c,'%Y-%m-%d %H:%M:%S') - datetime.strptime(o,'%Y-%m-%d %H:%M:%S') for c, o in zip(closure, opening) if datetime.strptime(c,'%Y-%m-%d %H:%M:%S') - datetime.strptime(o,'%Y-%m-%d %H:%M:%S')<timedelta(hours=24)]

因为结果本身就是一个列表。

然后您可以遍历 results 并进行您想要的计算。

但是,恕我直言,我认为您在这里使用列表推导式会使事情复杂化。如果您只是手写 for 循环,您的代码会更合理。

results = []
for c, o in zip(closing, opening):
    delta_t = datetime.strptime(c,'%Y-%m-%d %H:%M:%S') - datetime.strptime(o,'%Y-%m-%d %H:%M:%S') for c, o in zip(closure, opening)
    if delta_t < timedelta(hours=24):
        results.append(delta_t.total_seconds() / 3600)

关于python - 如何在 python 中将 DateTime 对象转换为小时数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44600265/

相关文章:

python-3.x - 使用 Python 请求库将 unicode 字符串发布到 Web 服务

java - 将 jcalendar 日期转换为 XMLGregorianCalendar 获取 Null 值

python - pip安装python-lzo时找不到文件报错

python :get possibilities of lists and change the number of loops

python - 在 for 循环中重用变量,在 next for 循环中

r - 将 %B.%Y 转换为 R 中的日期返回 NA

c# - C#DateTime解析器错误?

python - 为什么我卡住的应用程序被检测为可能的病毒?

python - matplotlib NavigationToolbar2QT 操作中没有图形选项

python - 如何使用 Pandas 获取单元格的值并存储到变量中?