将 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 转换为秒的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Hive 间隔转换为秒数?

如何将时间字符串转换为秒?

如何使用 Java 将 10ms 刻度值转换为秒?

将 DateTime.Now 转换为秒

如何将描述时间的字符串转换为秒?

php 将时间戳转换为秒(2 小时 12 分钟或 2:12:00)