Класс 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 предоставляет функции работы с датами.
END_OF_DOCUMENT_MARKERОбъект 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 н.э., 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.
Документация по типу члена
enum 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()
Создаёт дату по умолчанию. Даты по умолчанию некорректны.
См. также 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 месяцев позже или раньше, чем текущая дата.
Примечание: Если сочетание дня/месяца в результирующей дате не существует, эта функция вернёт максимально возможную корректную дату.
См. также addDays() и addYears().
QDate QDate::addYears(int nyears) const
Возвращает объект QDate с датой, на 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: Рекомендуется использовать короткие английские имена месяцев (например, "Янв"). Хотя локальные имена месяцев также могут быть использованы, они зависят от настроек локали пользователя.
См. также 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().
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 &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.12/qdate.html