日期与时间控件QDate, QTime, QDateTime

继承于     QAbstractSpinBox   

日期格式符:

d          没有前导零的数字的日期(1到31)

ddd      缩写的本地化日期名称(例如'Mon'到'Sun'
dddd    完整本地化的日期名称(例如“星期一”到“星期日”)
M         没有前导零的数字的月份(1-12)
MM      月份为前导零的数字(01-12)
MMM   缩写的本地化月份名称(例如'Jan'到'Dec')
MMMM   完整的本地化月份名称(例如“1月”到“12月”)
yy     年份为两位数字(00-99)
yyyy    年份为四位数字

时间格式符:

h         没有前导零的小时(如果显示AM / PM,则为0到23或1到12)
hh       前导零的小时(如果AM / PM显示,则为00到23或01到12)
H        没有前导零的小时(0到23,即使有AM / PM显示)
HH     前导零的小时(00到23,即使有AM / PM显示)
m        没有前导零的分钟(0到59)
mm      前导零(00到59)的分钟
s           整个秒没有前导零(0到59)
ss        带有前导零(00到59)
z         第二个小数部分, 没有尾随零的毫秒(0到999)
zzz       第二个小数部分, 有尾随零的毫秒(000到999)
AP / A      使用AM / PM显示                AM--上午    PM--下午
ap / a       使用am / pm显示
t             时区

QDateTimeEdit:

import sys
from PyQt5.QtWidgets import QApplication, QWidget,QDateTimeEdit,QPushButton
from PyQt5.QtCore import QDateTime,QDate,QTime

class Demo(QWidget):
    def __init__(self):
        super().__init__()
        self.resize(300,300)
        def A():
            s=t.elapsed()  #返回从start()或restart()开始计时到这条语句的毫秒数

            #section操作
            s = dte1.sectionCount()  # 获取section个数--就是日期时间格式个数
            s=dte1.currentSectionIndex()   #返回当前Section的序号
            dte1.setFocus()  #注意:获取焦点指令会把section的序号返回0
            #dte1.setCurrentSectionIndex(3)  #设置当前操作的日期时间section--根据序号

            dte1.setCurrentSection(QDateTimeEdit.SecondSection)  #设置当前操作的日期时间section--根据指定的section
            #QDateTimeEdit.YearSection   年部分
            #QDateTimeEdit.MonthSection  月部分
            #QDateTimeEdit.DaySection    日部分
            #QDateTimeEdit.HourSection   小时部分
            #QDateTimeEdit.MinuteSection   分部分
            #QDateTimeEdit.SecondSection  秒部分
            #QDateTimeEdit.MSecSection    毫秒部分
            #QDateTimeEdit.AmPmSection
            #QDateTimeEdit.NoSection    没有

            s=dte1.sectionText(QDateTimeEdit.HourSection)  #返回指定section的文本
            print(s)

        def B():
            dte1.setCalendarPopup(True)  #是否弹出日历控件
            #True 按钮变成下拉按钮,点击下拉按钮弹出日历控件
            #calendarPopup()   返回是否弹出日历控件

            s=dte1.dateTime() #获取QDateTime
            s=dte1.date()   #获取QDate
            s=dte1.time()  #获取QTime

        btn=QPushButton('按钮',self)
        btn.move(80,250)
        btn.clicked.connect(A)
        btn1 = QPushButton('按钮1', self)
        btn1.move(160, 250)
        btn1.clicked.connect(B)
        dte=QDateTimeEdit(self)  #实例化一个日期时间控件
        dte.move(100,20)
        dt=QDateTime(1968,1,4,7,38,4)  #创建日期时间对象;1968年1月4日7点38分4秒
        dte1 = QDateTimeEdit(dt,self)  # 实例化一个日期时间控件--自定义日期时间
        #参数1  可以是QDateTime,QDate,QTime
        dte1.move(100,70)
        dte2 = QDateTimeEdit(QDate.currentDate(), self)  # 实例化一个日期控件--没有时间
        dte2.move(100, 120)
        dte2 = QDateTimeEdit(QTime.currentTime(), self)  # 实例化一个时间控件--没有日期
        dte2.move(100, 170)

        #QDateTime类
        dt=QDateTime.currentDateTime()   #获取系统当前日期时间
        #QDateTime(2019, 6, 6, 10, 37, 26, 884)
        dt1=dt.addYears(2)  #在dt基础上增加2年后赋值给dt1,dt不变
        dt1=dt.addMonths(2)  #在dt基础上增加2月后赋值给dt1,dt不变
        dt1=dt.addSecs(2)  #在dt基础上增加2秒后赋值给dt1,dt不变
        dt1 = dt.addMSecs(2)  #在dt基础上增加2毫秒后赋值给dt1,dt不变
        dt1 = dt.addDays(2)  # 在dt基础上增加2日后赋值给dt1,dt不变
        s=dt.offsetFromUtc()  #返回与国际标准时间的差,秒

        #dte1.setDisplayFormat('yy-MM-dd mm:ss:zzz')  #设置显示格式
        #displayFormat() -> str   返回格式符

        #日期时间范围:
        dte1.setMaximumDateTime(QDateTime(2020, 2, 10, 1, 5, 5))  # 设置最大日期时间
        # 默认 9999年12月31日 23:59:59 999毫秒
        #maximumDateTime() -> QDateTime   返回最大日期时间
        #clearMaximumDateTime()  清除自定义的最大日期时间,恢复默认值
        #setMinimumDateTime(QDateTime)   设置最小日期时间
        #minimumDateTime() -> QDateTime   返回最小日期时间
        #clearMinimumDateTime()   清除自定义的最小日期时间,恢复默认值
        #dte1.setDateTime()  #设置日期时间范围范围

        #日期范围:
        #setMaximumDate(QDate)  设置最大日期,默认包含9999年12月31日
        #maximumDate() -> QDate  获取最大日期
        #clearMaximumDate()  清除自定义最大日期, 恢复默认
        #setMinimumDate(QDate)  设置最小日期,默认1752年9月14日
        #minimumDate() -> QDate  获取最小日期
        #clearMinimumDate()   清除自定义最小日期, 恢复默认
        #setDateRange(min_date, max_date)  日期范围

        #时间范围:
        #setMaximumTime(QTime)   设置最大时间
        #maximumTime() -> QTime    返回最大时间
        #clearMaximumTime()      清除自定义时间
        #setMinimumTime(QTime)   设置最小时间
        #minimumTime() -> QTime    返回最小时间
        #clearMinimumTime()     清除最小时间
        #setTimeRange(min_time, max_time)   设置范围

        #QDateEdit   日期控件款
        #QTimeEdit   时间控件框

        #QTime类
        t1=QTime(8,20)  #实例化时间对象-8点20分
        t=QTime.currentTime()  #获取系统当前时间
        t.start()  #开始计时
        #restart()  重新开始计时

        t1=t.addSecs(5)  #在t基础上增加5秒后赋值给t1,t不变
        t1=t1.addMSecs(5)  #在t基础上增加5毫秒后赋值给t1,t不变
        t1=t.hour()  #获取hour
        t1=t.minute()  #获取minute
        t1=t.second()  #获取second
        t1=t.msec()  #获取毫秒


        #QDate类
        d=QDate(1968,1,4)
        d.setDate(1996, 3, 18)  #设置日期
        d = QDate.currentDate()  # 获取当前日期
        print(d)
        s=d.addYears(2)  #增加2年,d不变
        s=d.addMonths(2)  #增加2月,d不变
        s=d.addDays(2)  #增加2日,d不变
        s=d.day()  #获取日
        s=d.month()  #获取月
        s=d.year() #获取年
        s=d.dayOfWeek()  #获取星期几
        s=d.dayOfYear()  #这一年 第几日
        s=d.daysInMonth()  #这一月总共多少天
        s=d.daysInYear()  #这一年总共多少天
        s=d.daysTo(QDate(2019,5,4))  #计算时间差  单位:日
        #参数中的日期减去d
        print(s)

        #信号
        dte1.dateTimeChanged.connect(lambda x:print('日期时间改变了',x))  #日期时间发生改变时发出信号
        #把改变后的QDateTime传给槽函数
        #dateChanged(QDate date)    日期改变时发出信号
        #timeChanged(QTime time)    时间改变时发出信号

if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = Demo()
    demo.show()
    sys.exit(app.exec_())

天子骄龙 

原文地址:https://www.cnblogs.com/liming19680104/p/10362942.html