Класс QDate
Класс QDate предоставляет функции для работы с датами. Подробнее...
| Заголовок: | #include <QDate> |
| qmake: | QT += core |
Примечание: Все функции в этом классе являются повторно-входящими.
Типы публичного доступа
| Перечисление | MonthNameType { DateFormat, StandaloneFormat } |
Функции публичного доступа
| QDate(int y, int m, int d) | |
| QDate() | |
| 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 представляет конкретную дату. Это может быть выражено как календарная дата, т.е. номера года, месяца и дня, в пролептическом григорианском календаре.
END_OF_DOCUMENT_MARKERОбъект QDate обычно создается, явно задавая год, месяц и день. Обратите внимание, что QDate интерпретирует значения года меньше 100 как представленные, т.е., как годы от 1 до 99, без добавления смещения. Статическая функция 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 н.э., QDate(1, 1, 1), — 31 декабря 1 до н.э., QDate(-1, 12, 31).
Диапазон допустимых дат
Даты хранятся в виде внутреннего номера Джулиана, целочисленного подсчета каждого дня в непрерывном диапазоне, где 24 ноября 4714 г. до н.э. в григорианском календаре соответствует дню Джулиана 0 (1 января 4713 г. до н.э. в юлианском календаре). Помимо эффективности и точности хранения абсолютной даты, это подходит для преобразования даты в другие календарные системы, такие как еврейская, исламская или китайская. Номер дня Джулиана можно получить с помощью QDate::toJulianDay(), и его можно установить с помощью QDate::fromJulianDay().
Диапазон дат, которые может хранить QDate в виде числа дня Джулиана, по техническим причинам ограничен значениями от -784350574879 до 784354017364, что означает период от до 2 миллиардов лет до н.э. до после 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") поддерживаются, но использовать их нужно с осторожностью, так как результирующие строки не всегда надёжно читаемы (например, если "dM" даёт "212", это может означать либо 2 декабря, либо 21 февраля).
Примеры строк форматирования (предполагая, что 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(int y, int m, int d)
Конструирует дату с годом y, месяцем m и днём d.
Если заданная дата недействительна, дата не устанавливается, и isValid() возвращает false.
Предупреждение: Годы от 1 до 99 интерпретируются как есть. Год 0 недействителен.
См. также isValid().
QDate::QDate()
Конструирует нулевую дату. Нулевые даты недействительны.
См. также isNull() и 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, используя заданный format, или недействительную дату, если строка не может быть обработана.
Примечание для Qt::TextDate: Рекомендуется использовать короткие английские названия месяцев (например, "Янв"). Хотя локальные названия месяцев также могут быть использованы, они зависят от настроек региона пользователя.
См. также toString() и QLocale::toDate().
[static] QDate QDate::fromString(const QString &string, const QString &format)
Возвращает QDate, представленную строкой string, используя заданный format, или недействительную дату, если строка не может быть обработана.
Эти выражения могут быть использованы для форматирования:
END_OF_DOCUMENT_MARKER| Выражение | Вывод |
|---|---|
| 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. Указатели могут быть null.
Возвращает 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, недели начинаются с понедельника, а первая четверг года всегда попадает в неделю 1 этого года. Большинство лет имеют 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 &QDate::operator<<(QDataStream &out, const QDate &date)
Записывает date в поток out.
См. также Сериализация типов данных Qt.
QDataStream &QDate::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.13/qdate.html