Дата и час в Qt

дата

Работата с дати и часове в Qt се извършва с помощта на

класове QDate , QTime и QDateTime , които са предназначени да съхраняват дати и часове и да извършват различни операции с тях. Най-често искате да получите текущата дата и час. Тези класове предоставят методи за преобразуване на дата и час в низ със специфичен формат. Има и методи за извършване на обратното преобразуване - от низ.

Таймерът уведомява приложението, че е изтекло определено време. Събитията на таймера се класифицират като външни прекъсвания. Външни прекъсвания

са прекъсвания, задействани от асинхронни събития като I/O устройства или самото устройство с таймер. Стартовите интервали на таймера се задават в милисекунди. Недостатъкът е, че ако програмата е заета с интензивни изчисления, тогава събитията на таймера могат да бъдат обработени в края на процеса на изчисление. Когато излезете от приложението, таймерите се унищожават автоматично.

Приложенията често изискват информация за дата и час. Например, за издаване на отчетна информация или за прилагане на часове. Qt предоставя три класа за работа с дати и часове: QDate, QTime и QDateTime, дефинирани в заглавните файлове QDate, QTime и QDateTime.

QDate дата (2007, 10, 25);

Тези стойности могат да бъдат зададени и след като обектът е създаден с помощта на метода setDate(). Например:

date.setDate(2007, 10, 25);

За да получите стойностите за година, месец и ден, зададени в обект за дата, използвайте следните методи:

year() - връща цяла година в диапазона от 1752 до 8000;

day() - връща деня от месеца в диапазона от 1 до 31.

Използване на методаdaysInMonth() можете да получите броя на дните в месеца, а с помощта на метода daysInYear() можете да получите броя на дните в годината.

За да получите деня от седмицата, извикайте метода dayOfWeek(). Методът dayOfYear() се използва за получаване на деня от годината. Можете също да получите номера на седмицата, като извикате метода weekNumber().

Методът toString() ви позволява да получите текстово представяне на дата.

Можете да дефинирате свой собствен формат на времето, като преминете към метода toString(), който го описва. Например:

QTime

QDate дата (2007, 10, 25);

str = date.toString("d.M.yy"); //str - "3.7.07" str = date.toString( "dd/MM/yy"); //str - "03/07/04"

str = date.toString( "yyyy.MMMM.dddd" );//str = "2007.юли.събота"

С помощта на метода addDays() можете да получите променената дата, като добавите или извадите дни от нея. Действията на методите addMonths() и addYears() са сходни, но разликата е, че работят с месеци и години. Например:

QDate дата (2007, 1, 3);

QString str = date2.toString( "dd/MM/yy"); // str = "27/12/06"

Класът QDate предоставя метод fromString(), който ви позволява да конвертирате обратно от тип низ към тип QDate. За да направите това, трябва да подадете формата в първия параметър на метода. Една от най-често срещаните операции е получаването на текущата дата. За да направите това, извикайте метода currentDate().

Можете да използвате метода daysTo(), за да разберете разликата в дните между две дати. Следният пример определя броя на дните от текущата дата до Нова година:

QDate dateToday = QDate::currentDate();

QDate dateNewYear(dateToday.year(), 12, 31);

qDebug() "Оставащи " "дни до Нова година" ;

Обектите за дата могат да се сравняват един с друг, за което операторите ==, != и >= са дефинирани в класа QDate. Например:

QDatedatel (2007, 1, 3);

QDate date2(2007, 1, 5);

bool b = (дата == дата2); //b = невярно

Управлението на времето е много важна задача, с която можете да изчислявате закъснения в програмата, да показвате текущото време на екрана, да проверявате времето за създаване на файлове и т.н.

За да работи с времето, библиотеката Qt предоставя класа QTime. Както при обектите за дата, обектите за време могат да се сравняват с ==, != или >=. Времевите обекти са способни да съхраняват време с точност до милисекунди. Четири параметъра се предават на конструктора на клас QTime. Първият параметър е часове, вторият е минути, третият е секунди, а четвъртият е

QDate

милисекунди. Третият и четвъртият параметър могат да бъдат пропуснати, те са нула по подразбиране. Например:

Тези стойности могат да бъдат зададени и след като обектът за време е създаден с помощта на метода setHMS(). Например:

time.setHMS(20, 4, 23, 3);

За да получите часове, минути, секунди и милисекунди, зададени във времеви обект, следните методи са дефинирани в класа QTime:

час () - връща положителни часови стойности в диапазона от 0 до 23;

minute() - връща целочислена стойност, представляваща минутите, варираща от 0

second() - връща целочислена стойност, представляваща секунди, вариращи от 0

msec() – Връща цяло число между 0 и 999, представляващо милисекунди.

Класът QTime предоставя метода toString() за предаване на данните на обекта за време като низ. Можете да подадете един от форматите за време като параметър към този метод или да зададете свой собствен. Например:

QTime време (20, 4, 23, 3);

str = time.toString( "hh:mm:ss.zzz"); //str = "20:04:23.003" str = time.toString( "h:m:s ap" ); // str ="20:4:23"

С помощта на статичния метод fromString() можете да конвертирате от тип низ към тип QTime. За да направите това, една от стойностите на формата трябва да бъде предадена в първия параметър на метода.

Можете да получите модифициран времеви обект, като добавите или извадите секунди (или милисекунди) от съществуващ обект. Тези стойности се предават на методите addSecs() и addMSecs(). За да получите текущото време

Класът QTime съдържа статичен метод currentTime().

С помощта на метода start() можете да стартирате обратното броене, а за да разберете колко време е минало от началото на обратното броене, трябва да извикате метода elapsed(). Например, въз основа на тези методи, можете да направите малък профильор.

Следният пример изчислява времето за изпълнение на функцията test():

метода

qDebug() "Времето на изпълнение на функцията test() е "

Недостатъкът на класа QTime е, че ограничава интервала, след който ще започне да брои от нула. За да разрешите този проблем, можете да използвате класа QDateTime.

Обектите от клас QDateTime съдържат дата и час. обаждане

методът date() връща обект за дата QDate, докато извикването time() връща обект за време QTime. Този клас съдържа също методи toString() за представяне на данни като низ.

В програмите често има нужда от периодично повтаряне на определени действия на определени интервали. Разбира се, в някои случаи, за да зададете времевия интервал за извикване на функция, можете също да използвате обект от класа QTime и да направите нещо подобно:

for (;time.elapsed() processEvents() на класа на приложението QAppiication, спрете изпълнението на цикъла, така че програмата да може да обработва входящи събития.

QTime таймер; timer.start();

за (;timer.elapsed() QThread::exec() .

Всеки клас, който наследява от QObject, съдържа свои собствени вградени таймери. Извикването на метода QObject::startTimer() стартира таймера. Предава се интервалът на стартиране в милисекунди като параметър. Методът startTimer() връща идентификатор, необходим за разпознаване на таймерите, използвани в обекта. Когато зададеният интервал на задействане изтече, се генерира QTimerEvent и се предава на метода timerEvent(). Чрез извикване на метода QTimerEvent::timerId() на обекта

събитие QTimerEvent, можете да разберете идентификатора на таймера, който е задействал това събитие. Идентификаторът може да се използва за спиране на таймера чрез предаването му на метода QObject::killTimer(). Следната програма показва етикет, който се появява и изчезва на определени интервали.