将QDate转换为秒

时间:2014-02-20 08:06:47

标签: pyqt4 python-2.6 date-conversion seconds qdatetime

我从QDateTimeEdit获取日期并将其转换为秒,如下所示:

import time
from datetime import datetime

date = self.__ui.dateTimeEdit.date().toString("dd/MM/yy")
dateString = str(date)

seconds = time.mktime(datetime.strptime(dateString, "%d/%m/%y").timetuple()) 

这很有效,但由于它看起来很长,我的问题是:是否可以直接转换self.__ui.dateTimeEdit.date(),而不进行字符串转换?

EDIT1 不幸的是toMSecsSinceEpoch()作为falsetru建议,对我不起作用。

AttributeError: 'QDateTime' object has no attribute 'toMSecsSinceEpoch'

我正在使用PyQt 4.7.1 for Python 2.6

EDIT2 根据jonrsharpe的回答我已经转义字符串转换:

    date = self.__ui.dateTimeEdit.date().toPyDate()
    seconds = time.mktime(date.timetuple()) 

结果是一样的。

EDIT3 甚至更短的解决方案基于falsetru的评论:

self.__ui.dateTimeEdit.dateTime().toTime_t()

2 个答案:

答案 0 :(得分:2)

使用QDateTime.toMSecsSinceEpoch

>>> import PyQt4.QtCore
>>> d = PyQt4.QtCore.QDateTime(2014, 2, 20, 17, 10, 30)
>>> d.toMSecsSinceEpoch() / 1000
1392883830L

<强>更新

使用QDateTime.toTime_t替代方案:

>>> d = PyQt4.QtCore.QDateTime(2014, 2, 20, 17, 10, 30)
>>> d.toTime_t()
1392883830L

答案 1 :(得分:1)

你从

获得的QDate
self.__ui.dateTimeEdit.date()

还有另一种方法toPyDate,可以省去你通过字符串的往返。