与Python MySQLdb timedelta搏斗

时间:2012-10-22 21:41:31

标签: python mysql mysql-python

我正在将PHP程序转换为Python。显然MySQLdb返回MySQL时间字段,因为时间增量从午夜偏移。因此,包含文字“08:00:00”(上午8:00)的数据库字段将返回28,800秒。我发现其他一些帖子确认了这种行为,但找不到能够帮助我获得所需内容的代码示例。

我需要读取记录事件的日期和时间,并确定已经过了多长时间:

event_date = mysql_result[0] # datetime object
event_time = mysql_result[1] # timedelta object

now = datetime.now()         # datetime object
elapsed_minutes = ???        # need integer

我在docs.python.org上阅读了有关datetime的冗长文档,但是在获取datetime和timedelta值时,与当前时间相比,并且生成经过的分钟数(或秒数)是不成功的。整数。

我不是说答案不在那里或在另一个堆栈溢出帖子 - 只是我自己完全找不到并实现它是不成功的。有人可以伸出援手吗?

感谢。

1 个答案:

答案 0 :(得分:2)

In [82]: import datetime as dt
In [85]: now = dt.datetime.now()

In [129]: event_date = dt.date(2012,10,22)    
In [155]: event_date = dt.datetime(event_date.year, event_date.month, event_date.day)

In [130]: event_time = dt.timedelta(seconds = 28800)    
In [131]: event = event_date + event_time  

In [132]: elapsed = now - event
Out[132]: datetime.timedelta(0, 35008, 781476)    
In [133]: elapsed.total_seconds()
Out[133]: 35008.781476    
In [134]: elapsed.total_seconds() // 60
Out[134]: 583.0

或者,在Python2.6中,它没有total_seconds方法:

In [149]: (elapsed.days*24*60*60+elapsed.seconds+elapsed.microseconds/1e6)//60
Out[149]: 583.0