标签: timedelta

将timedelta转换为浮点数

我从减去两个日期时间得到了一个timedelta对象.我需要将此值作为浮点进行进一步计算.我发现的所有内容都可以使用浮点计算,但结果仍然是timedelta对象.

time_d = datetime_1 - datetime_2
time_d_float = float(time_d)
Run Code Online (Sandbox Code Playgroud)

不起作用.

python floating-point datetime timedelta python-2.7

44
推荐指数
3
解决办法
5万
查看次数

Python:以月为单位的2个日期时间的差异

可能重复:
查找两个日期之间的月份的最佳方法(在python中)

我想知道如何获得这种差异的确切月数:

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(因为小时)

python datediff date timedelta

39
推荐指数
4
解决办法
5万
查看次数

如何将delta添加到python datetime.time?

从:

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)

python time datetime timedelta

33
推荐指数
3
解决办法
7万
查看次数

如何从timedelta对象中删除微秒?

我计算平均时间,我想显示没有微秒的结果平均值.

avg = sum(datetimes, datetime.timedelta(0)) / len(datetimes)
Run Code Online (Sandbox Code Playgroud)

python format datetime timedelta

31
推荐指数
4
解决办法
2万
查看次数

带有负值的Python timedelta问题

嗨,我需要一些帮助才能理解为什么会这样.我有一种方法来跟踪事件程序中的"剩余时间":

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)

python timedelta

30
推荐指数
2
解决办法
3万
查看次数

在PostgreSQL中将<integer>秒添加到<timestamp>

我有一个包含以下列的项目表:

  • 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)

time casting timedelta

28
推荐指数
1
解决办法
1万
查看次数

如何使一个python numpy arange of datetime

我有一些输入数据,输入文件中的时间戳是从文件名中指定的日期时间开始的小时数.

这有点无用,所以我需要将它转换为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.

python datetime numpy timedelta

26
推荐指数
5
解决办法
4万
查看次数

Python:如何从datetime.timedelta对象中获取时间?

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

python mysql timedelta

22
推荐指数
1
解决办法
2万
查看次数

如何在python中的datetime.timedelta上执行divison?

我希望能够做到以下几点:

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

python datetime date division timedelta

22
推荐指数
2
解决办法
1万
查看次数

Timedelta乘以python中的float

我有两个日期,可以照常计算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)- 准确性受损.

python datetime multiplying timedelta

20
推荐指数
1
解决办法
7627
查看次数