日期與時間控件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_())

 

 

天子驕龍 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM