将 QDate 转换为秒
Posted
技术标签:
【中文标题】将 QDate 转换为秒【英文标题】:Convert QDate to seconds 【发布时间】:2014-02-20 08:06:47 【问题描述】:我从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 用于 Python 2.6
EDIT2 基于 jonrsharpe 的回答,我已经逃脱了字符串转换:
date = self.__ui.dateTimeEdit.date().toPyDate()
seconds = time.mktime(date.timetuple())
结果是一样的。
EDIT3 基于 falsetru 的评论甚至更短的解决方案:
self.__ui.dateTimeEdit.dateTime().toTime_t()
【问题讨论】:
【参考方案1】:使用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
【讨论】:
Tnx 回答,我收到此错误:AttributeError: 'QDateTime' object has no attribute 'toMSecsSinceEpoch'
。我用的是 Python 2.6,PyQt4,有问题吗?
@Aleksandar,它对我有用。我正在使用 Python 2.7.6 + PyQt4 4.10.2。
@Aleksandar,根据Qt QDateTime Class documentation,该方法是在Qt 4.7中引入的。检查你的 Qt/PyQt 版本。
@Aleksandar,您尝试过 jonrsharpe 的回答吗?如果这不起作用,请尝试toPyDateTime
。
@Aleksandar,你试过self.__ui.dateTimeEdit.toTime_t()
吗?【参考方案2】:
你得到的QDate
self.__ui.dateTimeEdit.date()
有另一种方法toPyDate
可以节省您通过字符串的往返行程。
【讨论】:
以上是关于将 QDate 转换为秒的主要内容,如果未能解决你的问题,请参考以下文章