Как изменить время в QDateTimeEdit

Имеется переменная date, которая имеет тип QDateTimeEdit.

date.dateTime() имеет тип QDateTime.

Как добавить или вычесть несколько дней или часов?


Ответы (1 шт):

Автор решения: S. Nick

Попробуйте так:

import sys
from PyQt5.Qt import *


class MyWin(QWidget):
    def __init__(self):
        super().__init__()
        
        lblCurrentDateTime   = QLabel()
        self.lblDateTimeEdit = QLabel()
        btn_days = QPushButton("DateTime + 7 days")
        btn_days.clicked.connect(self.editDateDay_days)
        btn_hours = QPushButton("DateTime + 2 hours")
        btn_hours.clicked.connect(self.editDateDay_hours)

        lblCurrentDateTime.setText(
            QDateTime.currentDateTime().toString('yyyy MM dd hh:mm:ss'))

        self.dateTimeBegin = QDateTimeEdit()
        self.dt = self.dateTimeBegin.dateTime().currentDateTime()

        lay = QVBoxLayout(self)
        lay.addWidget(lblCurrentDateTime)
        lay.addWidget(self.lblDateTimeEdit)
        lay.addWidget(btn_days)
        lay.addWidget(btn_hours)
        
    def editDateDay_days(self):
        self.dateTimeBegin.setDateTime(self.dt.addDays(7))
        self.dt = self.dt.addDays(7)
        currentTime = self.dateTimeBegin.dateTime().toString(
            'yyyy MM dd hh:mm:ss')
        self.lblDateTimeEdit.setText(
            self.dateTimeBegin.dateTime().toString('yyyy MM dd hh:mm:ss'))

    def editDateDay_hours(self):
        self.dateTimeBegin.setDateTime(self.dt.addSecs(1*60*60*2))
        self.dt = self.dt.addSecs(1*60*60*2)
        currentTime = self.dateTimeBegin.dateTime().toString(
            'yyyy MM dd hh:mm:ss')
        self.lblDateTimeEdit.setText(
            self.dateTimeBegin.dateTime().toString('yyyy MM dd hh:mm:ss'))


if __name__ =="__main__":
    app = QApplication(sys.argv)
    w = MyWin()
    w.show()
    sys.exit(app.exec_())

введите сюда описание изображения

→ Ссылка