我得到一个这样的start_date:
from django.utils.timezone import utc
import datetime
start_date = datetime.datetime.utcnow().replace(tzinfo=utc)
end_date = datetime.datetime.utcnow().replace(tzinfo=utc)
duration = end_date - start_date
Run Code Online (Sandbox Code Playgroud)
我得到这样的输出:
datetime.timedelta(0, 5, 41038)
Run Code Online (Sandbox Code Playgroud)
如何将此转换为正常时间,如下所示?
这样10分钟,1小时
我如何让Arrow返回两个时间戳之间的小时差异?
这就是我所拥有的:
difference = arrow.now() - arrow.get(p.create_time())
print(difference.hour)
Run Code Online (Sandbox Code Playgroud)
p.create_time() 是当前正在运行的进程的创建时间的时间戳.
返回:
AttributeError: 'datetime.timedelta' object has no attribute 'hour'
Run Code Online (Sandbox Code Playgroud)
编辑:我不想要所有三种格式的总时间,我希望它作为余数,例如."3天,4小时,36分钟"不是"3天,72小时,4596分钟"
我有一个pandas数据框'df',其中有一个原始列,日期时间格式为日期.我将硬日期设为变量:
hard_date = datetime.date(2013, 5, 2)
Run Code Online (Sandbox Code Playgroud)
然后我在我的df中创建了一个新列,其中包含date列和hard_date中的值之间的差异...
df['days_from'] = df['date'] - hard_date
Run Code Online (Sandbox Code Playgroud)
这产生了良好的输出.例如,当我在新列中打印第一个单元格时,它显示:
print (df['days_from'].iloc[0])
28 days 00:00:00
Run Code Online (Sandbox Code Playgroud)
但现在我想将新列转换为整数天数.我想过只拿前2个字符,但很多值都是负数,所以我正在寻找更好的路线.
有关将列转换为日期整数的有效方法的任何想法?
谢谢
Dateutil的timedelta对象似乎有一个自定义__str__方法:
In [1]: from datetime import timedelta
In [2]: td = timedelta(hours=2)
In [3]: str(td)
Out[3]: '2:00:00'
Run Code Online (Sandbox Code Playgroud)
我想做的是timedelta从字符串表示中重新创建一个对象.然而,据我所知,该datetime.parser.parse方法将始终返回一个datetime.datetime对象(参见https://dateutil.readthedocs.io/en/stable/parser.html):
In [4]: import dateutil.parser
In [5]: dateutil.parser.parse(str(td))
Out[5]: datetime.datetime(2016, 11, 25, 2, 0)
Run Code Online (Sandbox Code Playgroud)
我现在看到的唯一方法就是将转换时间值转换为天,小时和分钟,"破坏一些令人作呕的简单(但冗长)数学"以获得秒,分,小时等,并将这些传递__init__给新的timedelta.或者是否有更简单的方法?
可能重复:
Python datetime到Unix时间戳
有没有办法将a转换datetime为int,表示自2012年1月以来的分钟数,以便int可以修改,写入数据库,比较等等?编辑:我运行此服务器的服务器使用Python 2.6.6
date1 = datetime.datetime(2012, 10, 10, 10, 15, 44)
date2 = datetime.datetime(2012, 10, 17, 8, 45, 38)
roundedA = date2.replace(second = 0, microsecond = 0)
print roundedA
roundedB = date1.replace(second = 0, microsecond = 0)
print roundedB
minutes = (roundedA - roundedB).min
print minutes
Run Code Online (Sandbox Code Playgroud)
结果是:
-999999999 days, 0:00:00
Run Code Online (Sandbox Code Playgroud)
我想计算2个不同的日期差异.我在上面减去了,但它没有给我我想要的东西.如何减去两个日期并在几分钟或几小时内得到结果.
我有一个数据框,在其中比较两个不同日期之间的差异以获得小时和分钟的差异,例如:
start_date = '2018-07-03 16:03:00'
data_final = '2018-07-05 00:00:00'
duration = data_final - start_date
Run Code Online (Sandbox Code Playgroud)
我正在寻找的结果是'31: 57: 00 ',或者两个日期之间的总时间差。但我得到的结果是:“1 天,7:57:00”(每 24 小时写为 1 天)。
我尝试使用以下语句将其转换为 XMinutesHours 格式:
print (datetime.datetime.strptime (duration, "%H:%M:%S"))
Run Code Online (Sandbox Code Playgroud)
但我得到了错误:
ValueError: 时间数据'1天,7:57:00'与格式'%H:%M:%S'不匹配
任何想法?
我这样做了:
str_7 = str(waiting_time - timedelta(microseconds=waiting_time.microseconds)).split(":")
col_7 = time(int(str_7[0]), int(str_7[1]), int(str_7[2]))
Run Code Online (Sandbox Code Playgroud)
这段代码正确吗?
python ×9
datetime ×5
arrow-python ×1
date ×1
django ×1
int ×1
pandas ×1
python-2.6 ×1
python-3.x ×1
time ×1
timedelta ×1