Класс QDate
Класс QDate предоставляет функции для работы с датами. Подробнее...
| Заголовок: | #include <QDate> |
| qmake: | QT += core |
Примечание: Все функции этого класса являются реентерабельными.
Типы public
| Перечисление | MonthNameType { DateFormat, StandaloneFormat } |
Функции public
| QDate() | |
| QDate(int y, int m, int d) | |
| QDate | addDays(qint64 ndays) const |
| QDate | addMonths(int nmonths) const |
| QDate | addYears(int nyears) const |
| int | day() const |
| int | dayOfWeek() const |
| int | dayOfYear() const |
| int | daysInMonth() const |
| int | daysInYear() const |
| qint64 | daysTo(const QDate &d) const |
| void | getDate(int *year, int *month, int *day) const |
| bool | isNull() const |
| bool | isValid() const |
| int | month() const |
| bool | setDate(int year, int month, int day) |
| qint64 | toJulianDay() const |
| QString | toString(const QString &format) const |
| QString | toString(Qt::DateFormat format = Qt::TextDate) const |
| int | weekNumber(int *yearNumber = Q_NULLPTR) const |
| int | year() const |
| bool | operator!=(const QDate &d) const |
| bool | operator<(const QDate &d) const |
| bool | operator<=(const QDate &d) const |
| bool | operator==(const QDate &d) const |
| bool | operator>(const QDate &d) const |
| bool | operator>=(const QDate &d) const |
Статические public члены
| QDate | currentDate() |
| QDate | fromJulianDay(qint64 jd) |
| QDate | fromString(const QString &string, Qt::DateFormat format = Qt::TextDate) |
| QDate | fromString(const QString &string, const QString &format) |
| bool | isLeapYear(int year) |
| bool | isValid(int year, int month, int day) |
| QString | longDayName(int weekday, MonthNameType type = DateFormat) |
| QString | longMonthName(int month, MonthNameType type = DateFormat) |
| QString | shortDayName(int weekday, MonthNameType type = DateFormat) |
| QString | shortMonthName(int month, MonthNameType type = DateFormat) |
Связанные нечлены
| QDataStream & | operator<<(QDataStream &out, const QDate &date) |
| QDataStream & | operator>>(QDataStream &in, QDate &date) |
Подробное описание
Класс QDate предоставляет функции для работы с датами.
Объект QDate содержит календарную дату, т.е. год, месяц и день, в григорианском календаре. Он может считывать текущую дату с системных часов. Он предоставляет функции для сравнения дат и для работы с датами. Например, можно добавлять и вычитать дни, месяцы и годы к датам.
Объект QDate обычно создается, явно указав год, месяц и день. Обратите внимание, что QDate интерпретирует двухзначные годы как есть, т.е. годы от 0 до 99. Объект QDate также может быть создан с помощью статической функции currentDate(), которая создает объект QDate, содержащий дату системных часов. Явную дату также можно установить с помощью setDate(). Функция fromString() возвращает QDate на основе строки и формата даты, используемого для интерпретации даты в строке.
Функции year(), month() и day() предоставляют доступ к году, месяцу и дню. Также предоставляются функции dayOfWeek() и dayOfYear(). Та же информация представлена в текстовом формате функциями toString(), shortDayName(), longDayName(), shortMonthName() и longMonthName().
QDate предоставляет полный набор операторов для сравнения двух объектов QDate, где меньшее значение соответствует более ранней дате, а большее — более поздней.
Вы можете увеличить (или уменьшить) дату на заданное количество дней с помощью addDays(). Аналогично, вы можете использовать addMonths() и addYears(). Функция daysTo() возвращает количество дней между двумя датами.
Функции daysInMonth() и daysInYear() возвращают количество дней в месяце и году этой даты соответственно. Функция isLeapYear() указывает, является ли год високосным.
Год 0 отсутствует
Года 0 нет. Даты в этом году считаются недействительными. Год -1 — это год «за 1 год до нашей эры» или «за 1 год до текущей эры». День перед 1 января 1 н.э. — 31 декабря 1 до н.э.
Диапазон допустимых дат
Даты хранятся во внутреннем виде как число Джулиана, целочисленный счётчик каждого дня в непрерывном диапазоне, где 24 ноября 4714 года до нашей эры в григорианском календаре соответствует числу Джулиана 0 (1 января 4713 года до нашей эры в юлианском календаре). Это эффективный и точный способ хранения абсолютной даты, а также подходит для преобразования даты в другие календарные системы, такие как еврейская, исламская или китайская. Число Джулиана можно получить с помощью QDate::toJulianDay() и установить с помощью QDate::fromJulianDay().
Диапазон дат, которые может хранить QDate в виде числа Джулиана, по техническим причинам ограничен значениями от -784350574879 до 784354017364, что означает период времени от до 2 миллиардов лет до нашей эры до после 2 миллиардов лет нашей эры.
См. также QTime, QDateTime, QDateEdit, QDateTimeEdit и QCalendarWidget.
Документация по типам членов
enum QDate::MonthNameType
Этот перечисление описывает типы строкового представления для имени месяца.
| Константа | Значение | Описание |
|---|---|---|
QDate::DateFormat |
0 |
Этот тип имени можно использовать для форматирования даты в строку. |
QDate::StandaloneFormat |
1 |
Этот тип используется, когда требуется перечислить месяцы или дни недели. Обычно имена в единственном числе представляются с заглавной первой буквой. |
Это перечисление было введено или изменено в Qt 4.5.
Документация по функциям членов
QDate::QDate()
Создаёт дату по умолчанию. Даты по умолчанию не являются валидными.
См. также isNull() и isValid().
QDate::QDate(int y, int m, int d)
Создаёт дату с годом y, месяцем m и днём d.
Если заданная дата некорректна, дата не устанавливается, и isValid() возвращает false.
Предупреждение: Годы от 1 до 99 интерпретируются непосредственно. Год 0 некорректен.
См. также isValid().
QDate QDate::addDays(qint64 ndays) const
Возвращает объект QDate с датой, отстоящей на ndays от текущей даты (или на более раннюю дату, если ndays отрицательно).
Возвращает дату по умолчанию, если текущая дата некорректна или новая дата выходит за пределы диапазона.
См. также addMonths(), addYears() и daysTo().
QDate QDate::addMonths(int nmonths) const
Возвращает объект QDate с датой, отстоящей на nmonths от текущей даты (или на более раннюю дату, если nmonths отрицательно).
Примечание: Если комбинация конечного дня/месяца не существует в полученном месяце/году, эта функция вернёт последнюю корректную дату.
См. также addDays() и addYears().
QDate QDate::addYears(int nyears) const
Возвращает объект QDate с датой, отстоящей на nyears от текущей даты (или на более раннюю дату, если nyears отрицательно).
Примечание: Если комбинация конечного дня/месяца не существует в полученном году (например, если дата была 29 февраля, а конечный год не високосный), эта функция вернёт последнюю корректную дату (то есть 28 февраля).
См. также addDays() и addMonths().
[static] QDate QDate::currentDate()
Возвращает текущую дату, согласно системным часам.
См. также QTime::currentTime() и QDateTime::currentDateTime().
int QDate::day() const
Возвращает день месяца (от 1 до 31) для этой даты.
Возвращает 0, если дата некорректна.
См. также year(), month() и dayOfWeek().
int QDate::dayOfWeek() const
Возвращает день недели (1 = понедельник, 7 = воскресенье) для этой даты.
Возвращает 0, если дата некорректна.
См. также day(), dayOfYear() и Qt::DayOfWeek.
int QDate::dayOfYear() const
Возвращает номер дня в году (от 1 до 365 или 366 в високосном году) для этой даты.
Возвращает 0, если дата некорректна.
См. также day() и dayOfWeek().
int QDate::daysInMonth() const
Возвращает количество дней в месяце (от 28 до 31) для этой даты.
Возвращает 0, если дата некорректна.
См. также day() и daysInYear().
int QDate::daysInYear() const
Возвращает количество дней в году (365 или 366) для этой даты.
Возвращает 0, если дата некорректна.
См. также day() и daysInMonth().
qint64 QDate::daysTo(const QDate &d) const
Возвращает количество дней от этой даты до даты d (отрицательное значение, если d раньше этой даты).
Возвращает 0, если одна из дат некорректна.
Пример:
QDate d1(1995, 5, 17); // May 17, 1995 QDate d2(1995, 5, 20); // May 20, 1995 d1.daysTo(d2); // returns 3 d2.daysTo(d1); // returns -3
См. также addDays().
[static] QDate QDate::fromJulianDay(qint64 jd)
Преобразует число Джулиана jd в QDate.
См. также toJulianDay().
[static] QDate QDate::fromString(const QString &string, Qt::DateFormat format = Qt::TextDate)
Возвращает QDate, представленную строкой string, используя заданный формат, или недействительную дату, если строку невозможно разобрать.
Примечание для Qt::TextDate: Рекомендуется использовать короткие английские имена месяцев (например, «Jan»). Хотя можно использовать и локализованные имена месяцев, они зависят от настроек локали пользователя.
См. также toString() и QLocale::toDate().
[static] QDate QDate::fromString(const QString &string, const QString &format)
Возвращает QDate, представленную строкой string, используя заданный формат, или недействительную дату, если строку невозможно разобрать.
Эти выражения могут использоваться для форматирования:
| Выражение | Вывод |
|---|---|
| d | День как число без ведущего нуля (от 1 до 31) |
| dd | День как число с ведущим нулём (от 01 до 31) |
| ddd | Сокращённое локализованное имя дня (например, «Пн» по «Вс»). Используется системная локали для локализации, т.е. QLocale::system(). |
| dddd | Полное локализованное имя дня (например, «Понедельник» по «Воскресенье»). Используется системная локали для локализации, т.е. QLocale::system(). |
| M | Месяц как число без ведущего нуля (от 1 до 12) |
| MM | Месяц как число с ведущим нулём (от 01 до 12) |
| MMM | Сокращённое локализованное имя месяца (например, «Янв» по «Дек»). Используется системная локали для локализации, т.е. QLocale::system(). |
| MMMM | Полное локализованное имя месяца (например, «Январь» по «Декабрь»). Используется системная локали для локализации, т.е. QLocale::system(). |
| yy | Год как число из двух цифр (от 00 до 99) |
| yyyy | Год как число из четырёх цифр. Если год отрицательный, перед ним ставится знак минус. |
Все другие символы входных данных будут обрабатываться как текст. Любая последовательность символов, заключённая в одинарные кавычки, также будет обрабатываться как текст и не будет использоваться как выражение. Например:
QDate date = QDate::fromString("1MM12car2003", "d'MM'MMcaryyyy");
// date is 1 December 2003 Если формат не удовлетворён, возвращается некорректная QDate. Выражения, не ожидающие ведущих нулей (d, M), будут жадными. Это означает, что они будут использовать две цифры, даже если это выведет их за пределы допустимого диапазона значений и оставит недостаточно цифр для других разделов. Например, следующая строка форматирования могла означать 30 января, но M возьмёт две цифры, что приведёт к некорректной дате:
QDate date = QDate::fromString("130", "Md"); // invalid Для любого поля, не представленного в формате, используются следующие значения по умолчанию:
| Поле | Значение по умолчанию |
|---|---|
| Год | 1900 |
| Месяц | 1 |
| День | 1 |
Следующие примеры демонстрируют значения по умолчанию:
QDate::fromString("1.30", "M.d"); // January 30 1900
QDate::fromString("20000110", "yyyyMMdd"); // January 10, 2000
QDate::fromString("20000110", "yyyyMd"); // January 10, 2000 См. также toString(), QDateTime::fromString(), QTime::fromString() и QLocale::toDate().
void QDate::getDate(int *year, int *month, int *day) const
Извлекает год, месяц и день даты и присваивает их *year, *month и *day соответственно. Указатели могут быть нулевыми.
Возвращает 0, если дата недействительна.
Примечание: В версиях Qt до 5.7 эта функция помечена как не-const.
Функция была добавлена в Qt 4.5.
См. также year(), month(), day() и isValid().
[static] bool QDate::isLeapYear(int year)
Возвращает true, если указанный год year високосный; в противном случае возвращает false.
bool QDate::isNull() const
Возвращает true, если дата равна null; в противном случае возвращает false. Нулевая дата считается недействительной.
Примечание: Поведение этой функции эквивалентно isValid().
См. также isValid().
bool QDate::isValid() const
Возвращает true, если дата действительна; в противном случае возвращает false.
См. также isNull().
[static] bool QDate::isValid(int year, int month, int day)
Это перегруженная функция.
Возвращает true, если указанная дата (year, month и day) действительна; в противном случае возвращает false.
Пример:
QDate::isValid(2002, 5, 17); // true QDate::isValid(2002, 2, 30); // false (Feb 30 does not exist) QDate::isValid(2004, 2, 29); // true (2004 is a leap year) QDate::isValid(2000, 2, 29); // true (2000 is a leap year) QDate::isValid(2006, 2, 29); // false (2006 is not a leap year) QDate::isValid(2100, 2, 29); // false (2100 is not a leap year) QDate::isValid(1202, 6, 6); // true (even though 1202 is pre-Gregorian)
См. также isNull() и setDate().
[static] QString QDate::longDayName(int weekday, MonthNameType type = DateFormat)
Возвращает полное имя дня недели weekday для представления, указанного параметром type.
Дни недели перечисляются следующим образом:
- 1 = "Понедельник"
- 2 = "Вторник"
- 3 = "Среда"
- 4 = "Четверг"
- 5 = "Пятница"
- 6 = "Суббота"
- 7 = "Воскресенье"
Имена дней будут локализованы в соответствии с системными настройками локали, т.е. с использованием QLocale::system().
Возвращает пустую строку, если дата недействительна.
Функция была добавлена в Qt 4.5.
См. также toString(), shortDayName(), shortMonthName() и longMonthName().
[static] QString QDate::longMonthName(int month, MonthNameType type = DateFormat)
Возвращает полное имя месяца month для представления, указанного параметром type.
Месяцы перечисляются следующим образом:
- 1 = "Январь"
- 2 = "Февраль"
- 3 = "Март"
- 4 = "Апрель"
- 5 = "Май"
- 6 = "Июнь"
- 7 = "Июль"
- 8 = "Август"
- 9 = "Сентябрь"
- 10 = "Октябрь"
- 11 = "Ноябрь"
- 12 = "Декабрь"
Имена месяцев будут локализованы в соответствии с системными настройками локали, т.е. с использованием QLocale::system().
Возвращает пустую строку, если дата недействительна.
Функция была добавлена в Qt 4.5.
См. также toString(), shortMonthName(), shortDayName() и longDayName().
int QDate::month() const
Возвращает число, соответствующее месяцу этой даты, используя следующую схему:
- 1 = "Январь"
- 2 = "Февраль"
- 3 = "Март"
- 4 = "Апрель"
- 5 = "Май"
- 6 = "Июнь"
- 7 = "Июль"
- 8 = "Август"
- 9 = "Сентябрь"
- 10 = "Октябрь"
- 11 = "Ноябрь"
- 12 = "Декабрь"
Возвращает 0, если дата недействительна.
bool QDate::setDate(int year, int month, int day)
Устанавливает год, месяц и день даты. Возвращает true, если дата действительна; в противном случае возвращает false.
Если указанная дата недействительна, объект QDate устанавливается как недействительный.
Функция была добавлена в Qt 4.2.
См. также isValid().
[static] QString QDate::shortDayName(int weekday, MonthNameType type = DateFormat)
Возвращает сокращенное имя дня недели weekday для представления, заданного параметром type.
Дни недели перечисляются следующим образом:
- 1 = "Пн"
- 2 = "Вт"
- 3 = "Ср"
- 4 = "Чт"
- 5 = "Пт"
- 6 = "Сб"
- 7 = "Вс"
Имена дней будут локализованы в соответствии с системными настройками локали, т.е. с использованием QLocale::system().
Возвращает пустую строку, если дата недействительна.
Функция была добавлена в Qt 4.5.
См. также toString(), shortMonthName(), longMonthName() и longDayName().
[static] QString QDate::shortMonthName(int month, MonthNameType type = DateFormat)
Возвращает сокращенное имя месяца month для представления, указанного параметром type.
Месяцы перечисляются следующим образом:
- 1 = "Янв"
- 2 = "Фев"
- 3 = "Мар"
- 4 = "Апр"
- 5 = "Май"
- 6 = "Июн"
- 7 = "Июл"
- 8 = "Авг"
- 9 = "Сен"
- 10 = "Окт"
- 11 = "Ноя"
- 12 = "Дек"
Имена месяцев будут локализованы в соответствии с системными настройками локали, т.е. с использованием QLocale::system().
Возвращает пустую строку, если дата недействительна.
Функция была добавлена в Qt 4.5.
См. также toString(), longMonthName(), shortDayName() и longDayName().
qint64 QDate::toJulianDay() const
Преобразует дату в юлианский день.
См. также fromJulianDay().
QString QDate::toString(const QString &format) const
Возвращает дату в виде строки. Параметр format определяет формат результирующей строки.
Можно использовать следующие выражения:
| Выражение | Вывод |
|---|---|
| d | день как число без ведущего нуля (от 1 до 31) |
| dd | день как число с ведущим нулем (от 01 до 31) |
| ddd | сокращенное локализованное название дня (например, 'Пн' до 'Вс'). Использует системную локаль для локализации, т.е. QLocale::system(). |
| dddd | полное локализованное название дня (например, 'Понедельник' до 'Воскресенье'). Использует системную локаль для локализации, т.е. QLocale::system(). |
| M | месяц как число без ведущего нуля (от 1 до 12) |
| MM | месяц как число с ведущим нулем (от 01 до 12) |
| MMM | сокращенное локализованное название месяца (например, 'Янв' до 'Дек'). Использует системную локаль для локализации, т.е. QLocale::system(). |
| MMMM | полное локализованное название месяца (например, 'Январь' до 'Декабрь'). Использует системную локаль для локализации, т.е. QLocale::system(). |
| yy | год как двузначное число (от 00 до 99) |
| yyyy | год как четырехзначное число. Если год отрицательный, перед ним ставится знак минус. |
Все остальные символы будут игнорироваться. Любая последовательность символов, заключенная в одинарные кавычки, будет обрабатываться как текст и не будет использоваться как выражение. Два последовательных одинарных кавычки ("''") заменяются одним в выводе. Форматы без разделителей (например, "ddMM") в настоящее время не поддерживаются.
Примеры форматов строк (предполагая, что QDate — 20 июля 1969 г.):
| Формат | Результат |
|---|---|
| dd.MM.yyyy | 20.07.1969 |
| ddd MMMM d yy | Вс Июль 20 69 |
| 'День —' dddd | День — Воскресенье |
Если дата недействительна, будет возвращена пустая строка.
См. также fromString(), QDateTime::toString(), QTime::toString() и QLocale::toString().
QString QDate::toString(Qt::DateFormat format = Qt::TextDate) const
Это перегруженный метод.
Возвращает дату в виде строки. Параметр format определяет формат строки.
Если format равен Qt::TextDate, строка форматируется по умолчанию. QDate::shortDayName() и QDate::shortMonthName() используются для генерации строки, поэтому имена дней и месяцев будут локализованными именами, используя системный локали, т.е. QLocale::system(). Пример такого форматирования: «Sat May 20 1995».
Если format равен Qt::ISODate, формат строки соответствует расширенному спецификации ISO 8601 для представления дат и времени, имея вид YYYY-MM-DD, где YYYY — год, MM — месяц года (от 01 до 12), а DD — день месяца (от 01 до 31).
Если format равен Qt::SystemLocaleShortDate или Qt::SystemLocaleLongDate, формат строки зависит от настроек локали системы. Идентично вызову QLocale::system().toString(date, QLocale::ShortFormat) или QLocale::system().toString(date, QLocale::LongFormat).
Если format равен Qt::DefaultLocaleShortDate или Qt::DefaultLocaleLongDate, формат строки зависит от локали по умолчанию приложения. Это локали, установленная с помощью QLocale::setDefault(), или системная локали, если локали по умолчанию не установлено. Идентично вызову QLocale().toString(date, QLocale::ShortFormat) или QLocale().toString(date, QLocale::LongFormat).
Если format равен Qt::RFC2822Date, строка форматируется в соответствии со спецификацией RFC 2822. Пример такого форматирования: «20 May 1995».
Если дата некорректна, возвращается пустая строка.
Предупреждение: Формат Qt::ISODate действителен только для годов в диапазоне от 0 до 9999. Это ограничение может также применяться к локальным форматам, в зависимости от настроек локали.
См. также fromString(), shortDayName(), shortMonthName() и QLocale::toString().
int QDate::weekNumber(int *yearNumber = Q_NULLPTR) const
Возвращает номер недели (от 1 до 53) и сохраняет год в *yearNumber, если yearNumber не равен null (по умолчанию).
Возвращает 0, если дата некорректна.
В соответствии с ISO 8601, недели начинаются с понедельника, а первая четверг года всегда находится в первой неделе этого года. Большинство лет имеют 52 недели, но некоторые — 53.
*yearNumber не всегда совпадает с year(). Например, 1 января 2000 года имеет номер недели 52 в году 1999, а 31 декабря 2002 года — номер недели 1 в году 2003.
См. также isValid().
int QDate::year() const
Возвращает год этой даты. Отрицательные числа указывают на годы до 1 н.э., так что год -44 — 44 до н.э.
Возвращает 0, если дата некорректна.
bool QDate::operator!=(const QDate &d) const
Возвращает true если эта дата отличается от d; в противном случае возвращает false.
bool QDate::operator<(const QDate &d) const
Возвращает true если эта дата раньше d; в противном случае возвращает false.
bool QDate::operator<=(const QDate &d) const
Возвращает true если эта дата раньше или равна d; в противном случае возвращает false.
bool QDate::operator==(const QDate &d) const
Возвращает true если эта дата равна d; в противном случае возвращает false.
bool QDate::operator>(const QDate &d) const
Возвращает true если эта дата позже d; в противном случае возвращает false.
bool QDate::operator>=(const QDate &d) const
Возвращает true если эта дата позже или равна d; в противном случае возвращает false.
Связанные нечленные функции
QDataStream &operator<<(QDataStream &out, const QDate &date)
Записывает date в поток out.
См. также Сериализация типов данных Qt.
QDataStream &operator>>(QDataStream &in, QDate &date)
Читает дату из потока in в date.
См. также Сериализация типов данных Qt.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.9/qdate.html