Класс QDate
Класс QDate предоставляет функции работы с датами. Подробнее...
| Заголовок: | #include <QDate> |
| qmake: | QT += core |
Примечание: Все функции в этом классе являются реентерабельными.
Публичные типы
| перечисление | MonthNameType { DateFormat, StandaloneFormat } |
Публичные функции
| 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 |
| QString | toString(QStringView format) const |
| int | weekNumber(int *yearNumber = 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 |
Статические публичные члены
| 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) |
Связанные внешние члены
| 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 н.э. — это 31 декабря 1 до н.э.
Диапазон допустимых дат
Даты хранятся во внутренней форме как число Джулианского дня, целочисленный счёт каждого дня в непрерывном диапазоне, начиная с 24 ноября 4714 до н.э. в григорианском календаре (1 января 4713 до н.э. в юлианском календаре). Помимо того, что это эффективный и точный способ хранения абсолютной даты, он подходит для преобразования даты в другие календарные системы, такие как еврейская, исламская или китайская. Число Джулианского дня можно получить с помощью QDate::toJulianDay() и установить с помощью QDate::fromJulianDay().
Диапазон дат, которые может хранить QDate в виде числа Джулианского дня, по техническим причинам ограничен значениями от -784350574879 до 784354017364, что означает от до н.э. до н.э. до после 2 миллиардов н.э.
См. также QTime, QDateTime, QDateEdit, QDateTimeEdit и QCalendarWidget.
Документация по типам членов
перечисление QDate::MonthNameType
Это перечисление описывает типы строковых представлений, используемых для имени месяца.
| Постоянная | Значение | Описание |
|---|---|---|
QDate::DateFormat |
0 |
Этот тип имени может использоваться для форматирования даты в строку. |
QDate::StandaloneFormat |
1 |
Этот тип используется, когда необходимо перечислить месяцы или дни недели. Обычно имена представлены в единственном числе с заглавной первой буквой. |
Этот перечисление был введён или изменён в Qt 4.5.
Документация по функциям-членам
QString QDate::toString(const QString &format) const
QString QDate::toString(QStringView 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().
QDate::QDate()
Создаёт объект даты null. Даты null недействительны.
См. также 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 отрицательно).
Возвращает дату null, если текущая дата недействительна или новая дата выходит за пределы диапазона.
См. также 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().
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().
QDate QDate::fromJulianDay(qint64 jd)
Преобразует юлианский день jd в QDate.
См. также toJulianDay().
QDate QDate::fromString(const QString &string, Qt::DateFormat format = Qt::TextDate)
Возвращает QDate, представленный строкой string, используя указанный формат format, или недействительную дату, если строка не может быть проанализирована.
Примечание для Qt::TextDate: рекомендуется использовать английские короткие названия месяцев (например, "Янв"). Хотя можно использовать и локальные названия месяцев, они зависят от настроек языка пользователя.
См. также toString() и QLocale::toDate().
QDate QDate::fromString(const QString &string, const QString &format)
Возвращает QDate, представленный строкой string, используя указанный формат 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 | Год в виде числа из четырёх цифр. Если год отрицательный, добавляется знак минус. |
Все остальные символы входных данных будут обрабатываться как текст. Любая последовательность символов, заключённых в одинарные кавычки, также будет обрабатываться как текст и не будет использоваться как выражение. Например:
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. Дата null является недействительной.
Примечание: Поведение этой функции эквивалентно 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().
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().
qint64 QDate::toJulianDay() const
Преобразует дату в юлианский день.
См. также fromJulianDay().
QString QDate::toString(Qt::DateFormat format = Qt::TextDate) const
Это перегруженная функция.
Возвращает дату в виде строки. Параметр format определяет формат строки.
Если format равен Qt::TextDate, строка форматируется стандартным способом. QDate::shortDayName() и QDate::shortMonthName() используются для генерации строки, поэтому имена дня и месяца будут локализованы с помощью системного языка, т. е. QLocale::system(). Пример такого форматирования: "Сб Май 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 мая 1995".
Если дата недействительна, будет возвращена пустая строка.
Предупреждение: Формат Qt::ISODate действителен только для годов в диапазоне от 0 до 9999. Это ограничение может также применяться к локально-зависимым форматам, в зависимости от настроек локали.
См. также fromString(), shortDayName(), shortMonthName(), и QLocale::toString().
int QDate::weekNumber(int *yearNumber = 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/archives/qt-5.11/qdate.html