我从减去两个日期时间得到了一个timedelta对象.我需要将此值作为浮点进行进一步计算.我发现的所有内容都可以使用浮点计算,但结果仍然是timedelta对象.
time_d = datetime_1 - datetime_2
time_d_float = float(time_d)
Run Code Online (Sandbox Code Playgroud)
不起作用.
我想知道如何获得这种差异的确切月数:
date1 = datetime.strptime(str('2011-08-15 12:00:00'), '%Y-%m-%d %H:%M:%S')
date2 = datetime.strptime(str('2012-02-15'), '%Y-%m-%d')
Run Code Online (Sandbox Code Playgroud)
date2-date1结果
datetime.timedelta(183, 43200)
Run Code Online (Sandbox Code Playgroud)
我想知道确切的月数,在这种情况下它应该返回5而不是6(因为小时)
从:
http://docs.python.org/py3k/library/datetime.html#timedelta-objects
timedelta对象表示持续时间,两个日期或时间之间的差异.
那么为什么我得到这个错误:
>>> from datetime import datetime, timedelta, time
>>> datetime.now() + timedelta(hours=12)
datetime.datetime(2012, 9, 17, 6, 24, 9, 635862)
>>> datetime.now().date() + timedelta(hours=12)
datetime.date(2012, 9, 16)
>>> datetime.now().time() + timedelta(hours=12)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'datetime.time' and 'datetime.timedelta'
Run Code Online (Sandbox Code Playgroud) 我计算平均时间,我想显示没有微秒的结果平均值.
avg = sum(datetimes, datetime.timedelta(0)) / len(datetimes)
Run Code Online (Sandbox Code Playgroud) 嗨,我需要一些帮助才能理解为什么会这样.我有一种方法来跟踪事件程序中的"剩余时间":
def get_program_time_budget(self):
return self.estimated_duration-self.get_program_duration()
Run Code Online (Sandbox Code Playgroud)
当estimated_duration> self.get_program_duration()时,所有这些都很好,但是当事情变得有趣时.
结果显示给用户:
Estimated 11 hours Allocated 10 hours 55 minutes Remaining 5 minutes
Run Code Online (Sandbox Code Playgroud)
当结果为负时,它会这样做:
Estimated 11 hours Allocated 11 hours 5 minutes Remaining -1 day 23 hours 55 minutes
Run Code Online (Sandbox Code Playgroud)
任何想法如何获得结果-5分钟?
编辑:这是timedelta格式化程序(注意这是一个Django过滤器,因此接收时间值作为str - 但它存储为timedelta):
def format_duration(value):
try:
delim = ':'
toks = value.split(',')
hour = minute = ''
d_string = value.count('day') and toks[0] or ''
h, m, s = d_string and toks[-1].strip().split(delim) or value.split(delim)
try:
hour = int(h)
except:
pass
try:
minute = int(m)
except: …Run Code Online (Sandbox Code Playgroud) 我有一个包含以下列的项目表:
start_time专栏(timestamp without time zone)expiration_time_seconds专栏(integer)例如,一些值是:
SELECT start_time, expiration_time_seconds
FROM whatever
ORDER BY start_time;
start_time | expiration_time_seconds
----------------------------+-------------------------
2014-08-05 08:23:32.428452 | 172800
2014-08-10 09:49:51.082456 | 3600
2014-08-13 13:03:56.980073 | 3600
2014-08-21 06:31:38.596451 | 3600
...
Run Code Online (Sandbox Code Playgroud)
如何将以秒为单位的到期时间添加到start_time?
我试图格式化interval命令的时间间隔字符串,但失败了:
blah=> SELECT interval concat(to_char(3600, '9999'), ' seconds');
ERROR: syntax error at or near "("
LINE 1: SELECT interval concat(to_char(3600, '9999'), ' seconds');
Run Code Online (Sandbox Code Playgroud) 我有一些输入数据,输入文件中的时间戳是从文件名中指定的日期时间开始的小时数.
这有点无用,所以我需要将它转换为python datetime.datetime对象,然后将它放在一个numpy数组中.我可以写一个for循环,但我想做的事情如下:
numpy.arange(datetime.datetime(2000, 1,1), datetime.datetime(2000, 1,2), datetime.timedelta(hours=1))
Run Code Online (Sandbox Code Playgroud)
这会引发TypeError.
可以这样做吗?我坚持使用python 2.6和numpy 1.6.1.
mysql数据库表有一个数据类型为time的列(http://dev.mysql.com/doc/refman/5.0/en/time.html).访问表数据时,Python将此列的值作为datetime.timedelta对象返回.如何从中抽出时间?(我真的不明白pydel手册中的timedelta是什么).
例如,表中的列包含值"18:00:00"Python-MySQLdb将其返回为datetime.timedelta(0,64800)
请忽略下面的内容(它会返回不同的值) -
补充:无论表中的时间值如何,python-MySQLdb似乎只返回datetime.timedelta(0,64800).
注意:我使用Python 2.4
我希望能够做到以下几点:
num_intervals = (cur_date - previous_date) / interval_length
Run Code Online (Sandbox Code Playgroud)
要么
print (datetime.now() - (datetime.now() - timedelta(days=5)))
/ timedelta(hours=12)
# won't run, would like it to print '10'
Run Code Online (Sandbox Code Playgroud)
但是timedeltas不支持除法运算.有没有办法可以为timedeltas实现divison?
编辑:看起来这是添加到Python 3.2(感谢rincewind!):http://bugs.python.org/issue2706
我有两个日期,可以照常计算timedelta.
但是我想用结果timedelta计算一些百分比:
full_time = (100/percentage) * timdelta
Run Code Online (Sandbox Code Playgroud)
但它似乎只能与互联网相乘.
我如何使用float而不是int乘数?
例:
percentage = 43.27
passed_time = fromtimestamp(fileinfo.st_mtime) - fromtimestamp(fileinfo.st_ctime)
multiplier = 100 / percentage # 2.3110700254217702796394730760342
full_time = multiplier * passed_time # BUG: here comes exception
estimated_time = full_time - passed_time
Run Code Online (Sandbox Code Playgroud)
如果使用int(multiplier)- 准确性受损.