我是一个Python新手(2周),我在格式化datetime.timedelta对象时遇到了麻烦.
这是我正在尝试做的事情:我有一个对象列表,该对象类的一个成员是一个timedelta对象,显示事件的持续时间.我希望以小时:分钟的格式显示该持续时间.
我已经尝试了各种方法来做到这一点,我遇到了困难.我目前的方法是为我的对象添加方法,返回小时和分钟.我可以通过将timedelta.seconds除以3600并将其四舍五入来获得小时数.我无法获得余数秒并将其转换为分钟.
顺便说一句,我正在使用Google AppEngine它Django Templates进行演示.
如果有人可以帮助或知道更好的解决方法,我会非常高兴.
谢谢,
我正在使用Python 2.7.3中的dateutil模块.我只是想用:
import dateutil
dateutil.parser.parse("01-02-2013")
Run Code Online (Sandbox Code Playgroud)
但是我收到了一个错误:
AttributeError: 'module' object has no attribute 'parser'
Run Code Online (Sandbox Code Playgroud)
我查了一下属性dateutil 确实具有:
print dir(dateutil)
# output: ['__author__', '__builtins__', '__doc__', '__file__', '__license__',
# '__name__', '__package__', '__path__', '__version__']
Run Code Online (Sandbox Code Playgroud)
问题是,当我尝试直接导入parser时dateutil,它似乎确实存在:
from dateutil import parser
print parser.parse("01-02-2013")
# output: 2013-01-02 00:00:00
Run Code Online (Sandbox Code Playgroud)
之后from dateutil import parser,parser还神奇地出现在了进口dateutil本身:
print dir(dateutil)
# output: ['__author__', '__builtins__', '__doc__', '__file__', '__license__',
# '__name__', '__package__', '__path__', '__version__', 'parser',
# 'relativedelta', 'tz']
Run Code Online (Sandbox Code Playgroud)
请注意,rrule此列表中仍缺少某些其他属性(如). …
我在 pandas 中有一个列dataframe是在减去两次后创建的。我现在有一个timedelta这样的对象-1 days +02:45:00。我只需要删除 -1 天并希望它是02:45:00。有没有办法做到这一点?
我如何让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分钟"
我正在使用熊猫 timedelta对象来跟踪体育相关数据集中的分割时间,使用以下类型的构造:
import pandas as pd
pd.to_timedelta("-0:0:1.0")
Run Code Online (Sandbox Code Playgroud)
这本机报告为:
-1 days +23:59:59
我可以使用原始秒数计算,pd.to_timedelta("-0:0:1.0").total_seconds()但如果负数以分钟或小时为单位,那就很笨拙了:
对于表达式:
pd.to_timedelta("-1:2:3.0")
Run Code Online (Sandbox Code Playgroud)
如何从对象中获取格式为"-1:2:3.0, 或的报告,而不是格式(带有浮点错误)或?-1 hour, 2 minutes, 3 secondstimedelta-3723.0000000000005-1 days +22:57:57
我一直在尝试创建一个函数,使用正确的单词列出日期之间的时间,特别是我希望它能够解释复数。我知道我可以通过 if 语句运行所有数字来做到这一点,但我真的希望找到一种更有效的方法来实现我的目标。
IE:我希望221 days, 1:17:06.996068从datetime返回,因为221 days, 1 hour, 17 minutes, and 6.99 seconds.它很重要,它在适当的时候表示日/小时/分钟/秒或天/小时/分钟/秒。
我的代码示例片段:
from datetime import datetime as dt
now = dt.now(tz=None) # Current local computer time
test = dt(2018,3,25,23,0,0) # March 25th, 2018 23h 0m 0s
countdown = test - now
print(countdown) # 2 days, 1:45:00.685739
# Desired outcome: 2 days, 1 hour, 45 minutes, 0.68 seconds.
Run Code Online (Sandbox Code Playgroud)
有没有一种函数可以有效地在单数或复数时间之间进行标记?
我有一个包含 timedelta 的列,我想创建一个额外的列,从 timedelta 列中提取小时和分钟。
df
time_delta hour_minute
02:51:21.401000 2h:51min
03:10:32.401000 3h:10min
08:46:43.401000 08h:46min
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所尝试过的:
df['rh'] = df.time_delta.apply(lambda x: round(pd.Timedelta(x).total_seconds() \
% 86400.0 / 3600.0) )
Run Code Online (Sandbox Code Playgroud)
不幸的是,我不太确定如何提取不包含在内的会议记录。小时
我是python的新手。我试图显示持续时间。我所做的是:
startTime = datetime.datetime.now().replace(microsecond=0)
... <some more codes> ...
endTime = datetime.datetime.now().replace(microsecond=0)
durationTime = endTime - startTime
print("The duration is " + str(durationTime))
Run Code Online (Sandbox Code Playgroud)
输出是 => 持续时间是 0:01:28 我可以知道如何从结果中删除小时吗?我要显示 => 持续时间是 01:28
提前致谢!
python ×7
datetime ×5
timedelta ×4
pandas ×3
arrow-python ×1
date ×1
duration ×1
format ×1
formatting ×1
python-2.7 ×1
python-3.x ×1
string ×1