1

我正在将 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 值,与当前时间进行比较,并将经过的分钟数(或秒数)生成为整数。

我并不是说答案不存在或在另一个堆栈溢出帖子中 - 只是我自己完全没有成功地找到并实施它。有人可以帮忙吗?

谢谢。

4

1 回答 1

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
于 2012-10-22T21:52:24.820 回答