Spec-Zone.ru › Qt 6.1

Класс QDateTime

Класс QDateTime предоставляет функции для работы с датой и временем. Подробнее...

Заголовок: #include <QDateTime>
CMake: find_package(Qt6 COMPONENTS Core REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
  • Список всех членов, включая унаследованные

Примечание: Все функции этого класса являются реентерабельными.

Типы

Перечисление YearRange { First, Last }

Открытые функции

QDateTime(QDateTime &&other)
QDateTime(const QDateTime &other)
QDateTime(QDate date, QTime time, const QTimeZone &timeZone)
QDateTime(QDate date, QTime time, Qt::TimeSpec spec = Qt::LocalTime, int offsetSeconds = 0)
QDateTime()
QDateTime & operator=(const QDateTime &other)
~QDateTime()
QDateTime addDays(qint64 ndays) const
QDateTime addMSecs(qint64 msecs) const
QDateTime addMonths(int nmonths) const
QDateTime addSecs(qint64 s) const
QDateTime addYears(int nyears) const
QDate date() const
qint64 daysTo(const QDateTime &other) const
bool isDaylightTime() const
bool isNull() const
bool isValid() const
qint64 msecsTo(const QDateTime &other) const
int offsetFromUtc() const
qint64 secsTo(const QDateTime &other) const
void setDate(QDate date)
void setMSecsSinceEpoch(qint64 msecs)
void setOffsetFromUtc(int offsetSeconds)
void setSecsSinceEpoch(qint64 secs)
void setTime(QTime time)
void setTimeSpec(Qt::TimeSpec spec)
void setTimeZone(const QTimeZone &toZone)
void swap(QDateTime &other)
QTime time() const
Qt::TimeSpec timeSpec() const
QTimeZone timeZone() const
QString timeZoneAbbreviation() const
CFDateRef toCFDate() const
QDateTime toLocalTime() const
qint64 toMSecsSinceEpoch() const
NSDate * toNSDate() const
QDateTime toOffsetFromUtc(int offsetSeconds) const
qint64 toSecsSinceEpoch() const
QString toString(const QString &format, QCalendar cal = QCalendar()) const
QString toString(Qt::DateFormat format = Qt::TextDate) const
QString toString(QStringView format, QCalendar cal = QCalendar()) const
QDateTime toTimeSpec(Qt::TimeSpec spec) const
QDateTime toTimeZone(const QTimeZone &timeZone) const
QDateTime toUTC() const

Статические открытые члены

QDateTime текущееВремя()
QDateTime текущееВремяUtc()
qint64 текущиеМиллисекундыСЭпохи()
qint64 текущиеСекундыСЭпохи()
QDateTime изCFDate(CFDateRef date)
QDateTime изМиллисекундСЭпохи(qint64 msecs, Qt::TimeSpec spec = Qt::LocalTime, int offsetSeconds = 0)
QDateTime изМиллисекундСЭпохи(qint64 msecs, const QTimeZone &timeZone)
QDateTime изNSDate(const NSDate *date)
QDateTime изСекундСЭпохи(qint64 secs, Qt::TimeSpec spec = Qt::LocalTime, int offsetSeconds = 0)
QDateTime изСекундСЭпохи(qint64 secs, const QTimeZone &timeZone)
QDateTime изСтроки(const QString &string, Qt::DateFormat format = Qt::TextDate)
QDateTime изСтроки(QStringView string, Qt::DateFormat format = Qt::TextDate)
QDateTime изСтроки(QStringView string, QStringView format, QCalendar cal = QCalendar())
QDateTime изСтроки(const QString &string, QStringView format, QCalendar cal = QCalendar())
QDateTime изСтроки(const QString &string, const QString &format, QCalendar cal = QCalendar())

Связанные нечлены

bool оператор!=(const QDateTime &lhs, const QDateTime &rhs)
bool оператор<(const QDateTime &lhs, const QDateTime &rhs)
QDataStream & оператор<<(QDataStream &out, const QDateTime &dateTime)
bool оператор<=(const QDateTime &lhs, const QDateTime &rhs)
bool оператор==(const QDateTime &lhs, const QDateTime &rhs)
bool оператор>(const QDateTime &lhs, const QDateTime &rhs)
bool оператор>=(const QDateTime &lhs, const QDateTime &rhs)
QDataStream & оператор>>(QDataStream &in, QDateTime &dateTime)

Подробное описание

Объект QDateTime кодирует календарную дату и время (дата и время). Он объединяет функции классов QDate и QTime. Он может считывать текущую дату и время с системных часов. Он предоставляет функции для сравнения дат и времени и для изменения даты и времени путем добавления определенного числа секунд, дней, месяцев или лет.

QDateTime может описывать даты и время относительно местного времени, UTC, указанного смещения от UTC или указанной временной зоны в сочетании с классом QTimeZone. Например, временная зона "Europe/Berlin" будет применять правила летнего времени, используемые в Германии с 1970 года. В отличие от этого, смещение от UTC +3600 секунд представляет собой на один час раньше UTC (обычно записывается в стандартной нотации ISO как "UTC+01:00"), без учета летнего времени или изменений. При использовании местного времени или указанной временной зоны учитываются переходы между часовыми поясами, такие как начало и конец летнего времени (DST; но см. ниже). Выбор системы для представления даты и времени описывается как его «timespec».

Объект QDateTime обычно создается либо путем явного указания даты и времени в конструкторе, либо путем использования статической функции, такой как currentDateTime() или fromMSecsSinceEpoch(). Дату и время можно изменить с помощью setDate() и setTime(). Дату и время также можно установить, используя функцию setMSecsSinceEpoch(), которая принимает время в миллисекундах с момента 00:00:00 1 января 1970 года. Функция fromString() возвращает QDateTime, заданную строкой и форматом даты, используемым для интерпретации даты в строке.

QDateTime::currentDateTime() возвращает QDateTime, которая выражает текущее время относительно местного времени. QDateTime::currentDateTimeUtc() возвращает QDateTime, которая выражает текущее время относительно UTC.

Функции date() и time() предоставляют доступ к частям даты и времени даты и времени. Та же информация предоставляется в текстовом формате функцией toString().

QDateTime предоставляет полный набор операторов для сравнения двух объектов QDateTime, где меньшее значение означает более раннее, а большее — более позднее.

Вы можете увеличить (или уменьшить) дату и время на заданное количество миллисекунд с помощью addMSecs(), секунд с помощью addSecs() или дней с помощью addDays(). Аналогично, вы можете использовать addMonths() и addYears(). Функция daysTo() возвращает количество дней между двумя датами и временем, secsTo() возвращает количество секунд между двумя датами и временем, а msecsTo() возвращает количество миллисекунд между двумя датами и временем. Эти операции учитывают летнее время (DST) и другие переходы между часовыми поясами, где это применимо.

Используйте toTimeSpec() для выражения даты и времени в местном времени или UTC, toOffsetFromUtc() для выражения в терминах смещения от UTC или toTimeZone() для выражения с учетом общей временной зоны. Вы можете использовать timeSpec() для определения того, относительно какой временной зоны объект QDateTime хранит свое время. Когда это Qt::TimeZone, вы можете использовать timeZone() для определения используемой зоны.

Примечание: QDateTime не учитывает добавочных секунд.

Примечания

Примечание: Все преобразования в строковый формат и из него выполняются с использованием локалей C. Для локализованных преобразований см. QLocale.

Примечание: В григорианском календаре нет года 0. Даты в этом году считаются недействительными. Год -1 — это год «до Рождества Христова» или «до общей эры».

Диапазон допустимых дат

Диапазон значений, которые может представлять QDateTime, зависит от реализации внутренней системы хранения. QDateTime в настоящее время хранится в qint64 как серийное значение msecs, кодирующее дату и время. Это ограничивает диапазон дат примерно ± 292 миллионами лет, по сравнению с диапазоном QDate ± 2 миллиарда лет. При создании QDateTime с экстремальными значениями необходимо следить за тем, чтобы не переполнить хранилище. Точный диапазон поддерживаемых значений варьируется в зависимости от Qt::TimeSpec и временной зоны.

Использование часовых поясов

QDateTime использует системную информацию о часовых поясах для определения текущей временной зоны и ее смещения от UTC. Если система настроена неправильно или не обновлена, QDateTime даст неправильные результаты.

Аналогичным образом QDateTime использует предоставляемую системой информацию для определения смещений других временных зон от UTC. Если эта информация неполная или устаревшая, QDateTime даст неправильные результаты. Более подробную информацию см. в документации QTimeZone.

На современных Unix-системах это означает, что QDateTime обычно имеет точную информацию о исторических переходах (включая DST, см. ниже), когда это возможно. В Windows, где система не поддерживает исторические данные о часовых поясах, точность исторических данных относительно переходов между часовыми поясами, в частности, включая DST, не поддерживается.

Летнее время (DST)

QDateTime учитывает переходы между стандартным временем и летним временем. Например, если переход происходит в 2 часа ночи, а время переходит на 3 часа ночи, то с 02:00:00 до 02:59:59.999 отсутствует час, который QDateTime считает недействительным. Любые арифметические операции с датами учитывают этот недостающий час и возвращают допустимый результат. Например, добавление одной минуты к 01:59:59 даст 03:00:00.

Диапазон допустимых дат, учитывая летнее время, составляет с 1970-01-01 по настоящее время, и существуют правила для правильной обработки летнего времени до 2037-12-31, но они могут измениться. Для дат после 2037 года QDateTime делает лучшую оценку, используя правила для 2037 года, но мы не можем гарантировать точность; действительно, для любой будущей даты часовой пояс может изменить свои правила до наступления этой даты. Для дат до 1970 года QDateTime не учитывает изменения летнего времени, даже если база данных часового пояса системы предоставляет эту информацию, хотя он учитывает изменения стандартного смещения часового пояса, если эта информация доступна.

Смещения от UTC

Явного ограничения на смещение от UTC нет, но неявное ограничение накладывается при использовании методов toString() и fromString(), которые используют формат [+|-]чч:мм, фактически ограничивая диапазон +/- 99 часов и 59 минут и только целыми минутами. Обратите внимание, что в настоящее время ни один часовой пояс не выходит за пределы диапазона +/- 14 часов.

См. также QDate, QTime, QDateTimeEdit и QTimeZone.

Документация по типам элементов

[since 5.14] Перечисление QDateTime::YearRange

Это перечисление описывает диапазон годов (в григорианском календаре), представимых QDateTime:

Константа Значение Описание
QDateTime::YearRange::First -292275056 Поздние части этого года представимы
QDateTime::YearRange::Last +292278994 Ранние части этого года представимы

Все даты, строго находящиеся между этими двумя годами, также представимы. Однако обратите внимание, что григорианский календарь не имеет года ноль.

Примечание: QDate может описывать даты в более широком диапазоне годов. Для большинства целей это мало влияет, так как диапазон лет, который поддерживает QDateTime, достигает 292 миллионов лет по обе стороны от 1970 года.

Это перечисление было введено или изменено в Qt 5.14.

См. также isValid() и QDate.

Документация по функциям элементов

QString QDateTime::toString(QStringView format, QCalendar cal = QCalendar()) const

QString QDateTime::toString(const QString &format, QCalendar cal = QCalendar()) const

Возвращает дату и время в виде строки. Параметр format определяет формат результирующей строки. Если задан cal, он определяет календарь, используемый для представления даты; по умолчанию используется григорианский. См. QTime::toString() и QDate::toString() для поддерживаемых спецификаторов времени и даты соответственно.

Любая последовательность символов, заключенная в одинарные кавычки, будет включена в выходную строку дословно (без кавычек), даже если она содержит символы форматирования. Две последовательные одинарные кавычки ("''") заменяются одной кавычкой в выводе. Все остальные символы в строке формата включаются в выходную строку дословно.

Форматы без разделителей (например, "ддмм") поддерживаются, но следует использовать их с осторожностью, так как результирующие строки не всегда надежно читаемы (например, если "дм" производит "212", это может означать либо 2 декабря, либо 21 февраля).

Примеры строк формата (предполагается, что QDateTime — 21 мая 2001 г. 14:13:09.120):

Формат Результат
дд.мм.гггг 21.05.2001
ddd MMMM d yy Вт Май 21 01
чч:мм:сс.zzz 14:13:09.120
чч:мм:сс.z 14:13:09.12
ч:м:с пп 2:13:9 пп

Если дата и время недействительны, будет возвращена пустая строка.

Примечание: Дни и месяцы, а также указание AM/PM даются на английском языке (локаль C). Если используются локализованные имена месяцев и дней и локализованные формы AM/PM, используйте QLocale::system().toDateTime().

См. также fromString(), QDate::toString(), QTime::toString() и QLocale::toString().

[since 5.8] QDateTime::QDateTime(QDateTime &&other)

Перемещает содержимое временного объекта other в этот объект и оставляет other в неопределённом (но корректном) состоянии.

Эта функция была введена в Qt 5.8.

QDateTime::QDateTime(const QDateTime &other)

Создаёт копию даты и времени other.

[since 5.2] QDateTime::QDateTime(QDate date, QTime time, const QTimeZone &timeZone)

Создаёт дату и время с заданной date и time, используя часовой пояс, указанный в timeZone.

Если date допустима, а time нет, время будет установлено в 00:00:00.

Если timeZone недопустима, то дата и время будут недопустимыми.

Эта функция была введена в Qt 5.2.

QDateTime::QDateTime(QDate date, QTime time, Qt::TimeSpec spec = Qt::LocalTime, int offsetSeconds = 0)

Создаёт дату и время с заданной date и time, используя указанные в spec и offsetSeconds секунды.

Если date допустима, а time нет, время будет установлено в полночь.

Если spec не равен Qt::OffsetFromUTC, offsetSeconds будет проигнорировано.

Если spec равен Qt::OffsetFromUTC и offsetSeconds равен 0, то timeSpec() будет установлено в Qt::UTC, т.е. смещение 0 секунд.

Если spec равен Qt::TimeZone, то spec будет установлен в Qt::LocalTime, т.е. текущий часовой пояс системы. Для создания даты и времени с Qt::TimeZone используйте соответствующий конструктор.

QDateTime::QDateTime()

Создаёт нулевую дату и время.

Нулевая дата и время недопустимы, так как их дата и время недопустимы.

См. также isValid().

QDateTime &QDateTime::operator=(const QDateTime &other)

Создаёт копию даты и времени other и возвращает ссылку на копию.

QDateTime::~QDateTime()

Удаляет дату и время.

QDateTime QDateTime::addDays(qint64 ndays) const

Возвращает объект QDateTime, содержащий дату и время на ndays дней позже или раньше, если ndays отрицательно.

Если timeSpec() равно Qt::LocalTime, а полученная дата и время попадают в час перехода от стандартного времени к летнему времени, результат будет скорректирован соответствующим образом, например, если переход происходит в 2 часа ночи, а время переходит на 3 часа ночи, а результат попадает между 2 и 3 часами ночи, то результат будет скорректирован, чтобы он попадал после 3 часов ночи.

См. также daysTo(), addMonths(), addYears() и addSecs().

QDateTime QDateTime::addMSecs(qint64 msecs) const

Возвращает объект QDateTime, содержащий дату и время на msecs миллисекунд позже или раньше, если msecs отрицательно.

Если дата и время недопустимы, будет возвращена недопустимая дата и время.

См. также addSecs(), msecsTo(), addDays(), addMonths() и addYears().

QDateTime QDateTime::addMonths(int nmonths) const

Возвращает объект QDateTime, содержащий дату и время на nmonths месяцев позже или раньше, если nmonths отрицательно.

Если timeSpec() равно Qt::LocalTime, а полученная дата и время попадают в час перехода от стандартного времени к летнему времени, результат будет скорректирован соответствующим образом, например, если переход происходит в 2 часа ночи, а время переходит на 3 часа ночи, а результат попадает между 2 и 3 часами ночи, то результат будет скорректирован, чтобы он попадал после 3 часов ночи.

См. также daysTo(), addDays(), addYears() и addSecs().

QDateTime QDateTime::addSecs(qint64 s) const

Возвращает объект QDateTime, содержащий дату и время, на s секунд позже (или раньше, если s отрицательно) по сравнению с датой и временем этого объекта.

Если эта дата и время некорректны, будет возвращена некорректная дата и время.

См. также addMSecs(), secsTo(), addDays(), addMonths() и addYears().

QDateTime QDateTime::addYears(int nyears) const

Возвращает объект QDateTime, содержащий дату и время, на nyears лет позже (или раньше, если nyears отрицательно) по сравнению с датой и временем этого объекта.

Если timeSpec() имеет значение Qt::LocalTime, и полученная дата и время попадают в промежуток перехода с летнего на зимнее время (или наоборот), то результат будет скорректирован соответственно. Например, если переход происходит в 2 часа ночи, а время переходит на 3 часа, и результат попадает между 2 и 3 часами ночи, то результат будет скорректирован, чтобы он приходился на время после 3 часов ночи.

См. также daysTo(), addDays(), addMonths() и addSecs().

[static] QDateTime QDateTime::currentDateTime()

Возвращает текущую дату и время, как сообщает системные часы, в часовом поясе по умолчанию.

См. также currentDateTimeUtc(), QDate::currentDate(), QTime::currentTime() и toTimeSpec().

[static] QDateTime QDateTime::currentDateTimeUtc()

Возвращает текущую дату и время, как сообщают системные часы, в формате UTC.

См. также currentDateTime(), QDate::currentDate(), QTime::currentTime() и toTimeSpec().

[static] qint64 QDateTime::currentMSecsSinceEpoch()

Возвращает количество миллисекунд, прошедших с 1970-01-01T00:00:00 по Всемирному координированному времени. Это число аналогично переменной POSIX time_t, но выражается в миллисекундах.

См. также currentDateTime(), currentDateTimeUtc() и toTimeSpec().

[static, since 5.8] qint64 QDateTime::currentSecsSinceEpoch()

Возвращает количество секунд, прошедших с 1970-01-01T00:00:00 по Всемирному координированному времени.

Эта функция была добавлена в Qt 5.8.

См. также currentMSecsSinceEpoch().

QDate QDateTime::date() const

Возвращает часть даты текущей даты и времени.

См. также setDate(), time() и timeSpec().

qint64 QDateTime::daysTo(const QDateTime &other) const

Возвращает количество дней от текущей даты и времени до заданной даты и времени other. Количество дней вычисляется как число раз, когда полуночь достигается между текущей датой и временем и датой и временем other. Это означает, что разница в 10 минут с 23:55 до 0:05 следующего дня учитывается как один день.

Если дата и время other раньше текущей даты и времени, возвращаемое значение отрицательное.

Пример:

QDateTime startDate(QDate(2012, 7, 6), QTime(8, 30, 0));
QDateTime endDate(QDate(2012, 7, 7), QTime(16, 30, 0));
qDebug() << "Days from startDate to endDate: " << startDate.daysTo(endDate);

startDate = QDateTime(QDate(2012, 7, 6), QTime(23, 55, 0));
endDate = QDateTime(QDate(2012, 7, 7), QTime(0, 5, 0));
qDebug() << "Days from startDate to endDate: " << startDate.daysTo(endDate);

qSwap(startDate, endDate); // Make endDate before startDate.
qDebug() << "Days from startDate to endDate: " << startDate.daysTo(endDate);

См. также addDays(), secsTo() и msecsTo().

[static, since 5.5] QDateTime QDateTime::fromCFDate(CFDateRef date)

Создаёт новый объект QDateTime, содержащий копию CFDate date.

Эта функция была добавлена в Qt 5.5.

См. также toCFDate().

[static] QDateTime QDateTime::fromMSecsSinceEpoch(qint64 msecs, Qt::TimeSpec spec = Qt::LocalTime, int offsetSeconds = 0)

Возвращает дату и время, которые являются количеством миллисекунд msecs, прошедших с 1970-01-01T00:00:00.000 по Всемирному координированному времени (Qt::UTC) и преобразуются в заданный spec.

Обратите внимание, что возможны значения msecs, которые лежат вне допустимого диапазона QDateTime, как отрицательные, так и положительные. Поведение этой функции не определено для этих значений.

Если spec не равно Qt::OffsetFromUTC, то offsetSeconds будет проигнорировано. Если spec равно Qt::OffsetFromUTC, и offsetSeconds равно 0, то spec будет установлено в Qt::UTC, то есть смещение 0 секунд.

Если spec равно Qt::TimeZone, то spec будет установлено в Qt::LocalTime, то есть текущий часовой пояс системы.

См. также toMSecsSinceEpoch() и setMSecsSinceEpoch().

[static, since 5.2] QDateTime QDateTime::fromMSecsSinceEpoch(qint64 msecs, const QTimeZone &timeZone)

Возвращает дату и время, которые являются количеством миллисекунд msecs, прошедших с 1970-01-01T00:00:00.000 по Всемирному координированному времени (Qt::UTC) и с заданным timeZone.

Эта функция была добавлена в Qt 5.2.

См. также fromSecsSinceEpoch().

[static, since 5.5] QDateTime QDateTime::fromNSDate(const NSDate *date)

Создаёт новый объект QDateTime, содержащий копию NSDate date.

Эта функция была добавлена в Qt 5.5.

См. также toNSDate().

[static, since 5.8] QDateTime QDateTime::fromSecsSinceEpoch(qint64 secs, Qt::TimeSpec spec = Qt::LocalTime, int offsetSeconds = 0)

Возвращает дату и время, которые являются количеством секунд secs, прошедших с 1970-01-01T00:00:00.000 по Всемирному координированному времени (Qt::UTC) и преобразуются в заданный spec.

Обратите внимание, что возможны значения secs, которые лежат вне допустимого диапазона QDateTime, как отрицательные, так и положительные. Поведение этой функции не определено для этих значений.

Если spec не равно Qt::OffsetFromUTC, то offsetSeconds будет проигнорировано. Если spec равно Qt::OffsetFromUTC, и offsetSeconds равно 0, то spec будет установлено в Qt::UTC, то есть смещение 0 секунд.

Если spec равно Qt::TimeZone, то spec будет установлено в Qt::LocalTime, то есть текущий часовой пояс системы.

Эта функция была добавлена в Qt 5.8.

См. также toSecsSinceEpoch() и setSecsSinceEpoch().

[static, since 5.8] QDateTime QDateTime::fromSecsSinceEpoch(qint64 secs, const QTimeZone &timeZone)

Возвращает дату и время, которые являются количеством секунд secs, прошедших с 1970-01-01T00:00:00.000 по Всемирному координированному времени (Qt::UTC) и с заданным timeZone.

Эта функция была добавлена в Qt 5.8.

См. также fromMSecsSinceEpoch().

[static] QDateTime QDateTime::fromString(const QString &string, Qt::DateFormat format = Qt::TextDate)

Возвращает QDateTime, представленный строкой string, используя заданный format, или некорректную дату и время, если это невозможно.

Примечание для Qt::TextDate: распознаются только краткие английские названия месяцев (например, "Jan" в краткой форме или "January" в полной форме).

См. также toString() и QLocale::toDateTime().

[static, since 6.0] QDateTime QDateTime::fromString(QStringView string, Qt::DateFormat format = Qt::TextDate)

Это перегруженная функция.

Эта функция была добавлена в Qt 6.0.

[static, since 6.0] QDateTime QDateTime::fromString(QStringView string, QStringView format, QCalendar cal = QCalendar())

Это перегруженный функция.

Эта функция была добавлена в Qt 6.0.

[static, since 6.0] QDateTime QDateTime::fromString(const QString &string, QStringView format, QCalendar cal = QCalendar())

Это перегруженный функция.

Эта функция была добавлена в Qt 6.0.

[static] QDateTime QDateTime::fromString(const QString &string, const QString &format, QCalendar cal = QCalendar())

Возвращает QDateTime, представленный строкой string, используя заданный формат, или недействительную дату и время, если строка не может быть обработана.

Использует календарь cal, если задан, иначе григорианский.

Помимо выражений, распознаваемых в строке формата для представления частей даты и времени, методами QDate::fromString() и QTime::fromString(), этот метод поддерживает:

Выражение Вывод
t часовой пояс (например, "CEST")

Если спецификатор формата 't' отсутствует, используется местный часовой пояс системы. По умолчанию для всех других полей см. QDate::fromString() и QTime::fromString().

Например:

QDateTime dateTime = QDateTime::fromString("1.30.1", "M.d.s");
// dateTime is January 30 in 1900 at 00:00:01.
dateTime = QDateTime::fromString("12", "yy");
// dateTime is January 1 in 1912 at 00:00:00.

Все остальные символы ввода будут обрабатываться как текст. Любая непустая последовательность символов, заключенная в одинарные кавычки, также будет обрабатываться (без кавычек) как текст и не будет интерпретироваться как выражение.

QTime time1 = QTime::fromString("131", "HHh");
// time1 is 13:00:00
QTime time1 = QTime::fromString("1apA", "1amAM");
// time1 is 01:00:00

QDateTime dateTime2 = QDateTime::fromString("M1d1y9800:01:02",
                                            "'M'M'd'd'y'yyhh:mm:ss");
// dateTime is 1 January 1998 00:01:02

Если формат не соблюдается, возвращается недействительная QDateTime. Если формат соблюдается, но string представляет недействительную дату и время (например, в разрыве, пропускаемом при переходе часового пояса), возвращается недействительная QDateTime, чья функция toMSecsSinceEpoch() представляет близкую действительную дату и время. Передача этого значения в fromMSecsSinceEpoch() вернёт действительную дату и время, которая не отображается корректно в парсинге строки.

Выражения без ведущих нулей (d, M, h, m, s, z) будут жадными. Это означает, что они будут использовать два знака (или три для z), даже если это выведет их за пределы диапазона и/или оставит слишком мало знаков для других разделов.

QDateTime dateTime = QDateTime::fromString("130", "Mm"); // invalid

Это могло означать 1 января 00:30.00, но M возьмёт два знака.

Неправильно указанные поля в string приведут к возвращению недействительной QDateTime. Например, рассмотрим следующий код, где двухзначный год 12 читается как 1912 (см. таблицу ниже для всех значений по умолчанию); полученная дата и время недействительны, потому что 23 апреля 1912 года было вторником, а не понедельником:

QString string = "Monday, 23 April 12 22:51:41";
QString format = "dddd, d MMMM yy hh:mm:ss";
QDateTime invalid = QDateTime::fromString(string, format);

Правильный код:

QString string = "Tuesday, 23 April 12 22:51:41";
QString format = "dddd, d MMMM yy hh:mm:ss";
QDateTime valid = QDateTime::fromString(string, format);

Примечание: Названия дней и месяцев, а также обозначения AM/PM должны быть на английском языке (локаль C). Если используются локализованные названия месяцев и дней и локализованные формы AM/PM, используйте QLocale::system().toDateTime().

См. также toString(), QDate::fromString(), QTime::fromString() и QLocale::toDateTime().

[since 5.2] bool QDateTime::isDaylightTime() const

Возвращает значение, показывающее, попадает ли эта дата и время в летнее время.

Если Qt::TimeSpec не равно Qt::LocalTime или Qt::TimeZone, всегда возвращает false.

Эта функция была добавлена в Qt 5.2.

См. также timeSpec().

bool QDateTime::isNull() const

Возвращает true если и дата, и время равны null; в противном случае возвращает false. Нулевая дата и время недействительны.

См. также QDate::isNull(), QTime::isNull() и isValid().

bool QDateTime::isValid() const

Возвращает true если и дата, и время действительны, и они действительны в текущем Qt::TimeSpec, в противном случае возвращает false.

Если timeSpec() равно Qt::LocalTime или Qt::TimeZone, проверяется, попадают ли дата и время в промежуток времени перехода с летнего на стандартное время, т. е. если переход происходит в 2 часа утра, и время переходит на 3 часа утра, то время с 02:00:00 до 02:59:59.999 считается недействительным.

См. также QDateTime::YearRange, QDate::isValid() и QTime::isValid().

qint64 QDateTime::msecsTo(const QDateTime &other) const

Возвращает количество миллисекунд от этой даты и времени до даты и времени other. Если дата и время other раньше, возвращаемое значение отрицательно.

Перед сравнением обе даты и время преобразуются в Qt::UTC, чтобы обеспечить правильность результата, если летнее время (DST) применяется к одной из двух дат и времени, но не к другой.

Возвращает 0, если одна из дат и времени недействительна.

См. также addMSecs(), daysTo() и QTime::msecsTo().

[since 5.2] int QDateTime::offsetFromUtc() const

Возвращает сдвиг этой даты и времени относительно UTC в секундах.

Результат зависит от timeSpec():

  • Qt::UTC Сдвиг равен 0.
  • Qt::OffsetFromUTC Сдвиг равен исходному значению.
  • Qt::LocalTime Возвращается сдвиг местного времени относительно UTC.
  • Qt::TimeZone Возвращается сдвиг, используемый часовым поясом.

В последних двух случаях возвращается сдвиг на эту дату и время с учётом летнего времени, если только дата не предшествует началу 1970 года. Сдвиг — это разность между местным временем или временем в заданном часовом поясе и временем UTC; он положителен для часовых поясов, опережающих UTC (восточнее Гринвичского меридиана), отрицателен для тех, которые отстают от UTC (западнее Гринвичского меридиана).

Эта функция была добавлена в Qt 5.2.

См. также setOffsetFromUtc().

qint64 QDateTime::secsTo(const QDateTime &other) const

Возвращает количество секунд от этой даты и времени до даты и времени other. Если дата и время other раньше, возвращаемое значение отрицательно.

Перед сравнением обе даты и время преобразуются в Qt::UTC, чтобы обеспечить правильность результата, если летнее время (DST) применяется к одной из двух дат и времени, но не к другой.

Возвращает 0, если одна из дат и времени недействительна.

Пример:

QDateTime now = QDateTime::currentDateTime();
QDateTime xmas(QDate(now.date().year(), 12, 25).startOfDay());
qDebug("There are %d seconds to Christmas", now.secsTo(xmas));

См. также addSecs(), daysTo() и QTime::secsTo().

void QDateTime::setDate(QDate date)

Устанавливает часть даты этой даты и времени на date. Если время ещё не установлено, оно устанавливается в полночь. Если date недействительна, эта QDateTime становится недействительной.

См. также date(), setTime() и setTimeSpec().

void QDateTime::setMSecsSinceEpoch(qint64 msecs)

Устанавливает дату и время, используя количество миллисекунд msecs, прошедших с 1970-01-01T00:00:00.000, по координированному всемирному времени (Qt::UTC). На системах, которые не поддерживают часовые пояса, эта функция будет работать так, как если бы местное время было Qt::UTC.

Обратите внимание, что передача минимального значения qint64 (std::numeric_limits<qint64>::min()) в msecs приведёт к неопределённому поведению.

См. также toMSecsSinceEpoch() и setSecsSinceEpoch().

[since 5.2] void QDateTime::setOffsetFromUtc(int offsetSeconds)

Устанавливает timeSpec() на Qt::OffsetFromUTC и сдвиг на offsetSeconds. Дата и время будут относиться к другой точке во времени.

Максимальный и минимальный сдвиг — 14 часов в положительном или отрицательном направлении. Если offsetSeconds больше или меньше этого, результат будет неопределённым.

Если offsetSeconds равен 0, то timeSpec() будет установлено на Qt::UTC.

Эта функция была добавлена в Qt 5.2.

См. также isValid() и offsetFromUtc().

[since 5.8] void QDateTime::setSecsSinceEpoch(qint64 secs)

Устанавливает дату и время, используя количество секунд secs, прошедших с 1970-01-01T00:00:00.000, по координированному всемирному времени (Qt::UTC). На системах, которые не поддерживают часовые пояса, эта функция будет работать так, как если бы местное время было Qt::UTC.

Эта функция была добавлена в Qt 5.8.

См. также toSecsSinceEpoch() и setMSecsSinceEpoch().

void QDateTime::setTime(QTime time)

Устанавливает часть времени этого объекта datetime в time. Если time некорректна, эта функция устанавливает её в полночь. Поэтому, можно очистить установленное время в QDateTime, установив его в значение по умолчанию QTime:

QDateTime dt = QDateTime::currentDateTime();
dt.setTime(QTime());

См. также time(), setDate() и setTimeSpec().

void QDateTime::setTimeSpec(Qt::TimeSpec spec)

Устанавливает временной спектр, используемый в этом объекте datetime, в spec. Объект datetime будет ссылаться на другую точку во времени.

Если spec равен Qt::OffsetFromUTC, то timeSpec() будет установлено в Qt::UTC, т. е. эффективный сдвиг равен 0.

Если spec равен Qt::TimeZone, то спектр будет установлен в Qt::LocalTime, т. е. текущая часовая зона системы.

Пример:

QDateTime local(QDateTime::currentDateTime());
qDebug() << "Local time is:" << local;

QDateTime UTC(local);
UTC.setTimeSpec(Qt::UTC);
qDebug() << "UTC time is:" << UTC;

qDebug() << "There are" << local.secsTo(UTC) << "seconds difference between the datetimes.";

См. также timeSpec(), setDate(), setTime(), setTimeZone() и Qt::TimeSpec.

[since 5.2] void QDateTime::setTimeZone(const QTimeZone &toZone)

Устанавливает часовую зону, используемую в этом объекте datetime, в toZone. Объект datetime будет ссылаться на другую точку во времени.

Если toZone некорректна, то объект datetime будет некорректным.

Эта функция была добавлена в Qt 5.2.

См. также timeZone() и Qt::TimeSpec.

[since 5.0] void QDateTime::swap(QDateTime &other)

Меняет местами этот объект datetime с other. Эта операция очень быстрая и никогда не терпит неудач.

Эта функция была добавлена в Qt 5.0.

QTime QDateTime::time() const

Возвращает часть времени datetime.

См. также setTime(), date() и timeSpec().

Qt::TimeSpec QDateTime::timeSpec() const

Возвращает временной спектр datetime.

См. также setTimeSpec(), date(), time() и Qt::TimeSpec.

[since 5.2] QTimeZone QDateTime::timeZone() const

Возвращает часовую зону datetime.

Если timeSpec() равен Qt::LocalTime, то будет возвращён экземпляр текущей часовой зоны системы. Однако, обратите внимание, что при копировании этой часовой зоны, экземпляр не будет синхронизироваться, если часовая зона системы изменится.

Эта функция была добавлена в Qt 5.2.

См. также setTimeZone() и Qt::TimeSpec.

[since 5.2] QString QDateTime::timeZoneAbbreviation() const

Возвращает сокращение часовой зоны datetime.

Если timeSpec() равен Qt::UTC, это будет "UTC".

Если timeSpec() равен Qt::OffsetFromUTC, это будет в формате "UTC[+-]00:00".

Если timeSpec() равен Qt::LocalTime, то для получения корректного сокращения будет запрошена система.

Обратите внимание, что сокращения могут быть или не быть локализованными.

Также обратите внимание, что сокращение не гарантируется как уникальное значение, т.е. разные часовые зоны могут иметь одинаковое сокращение.

Эта функция была добавлена в Qt 5.2.

См. также timeSpec().

[since 5.5] CFDateRef QDateTime::toCFDate() const

Создаёт CFDate из QDateTime.

Вызывающий владеет объектом CFDate и отвечает за его освобождение.

Эта функция была добавлена в Qt 5.5.

См. также fromCFDate().

QDateTime QDateTime::toLocalTime() const

Возвращает datetime, содержащий дату и время из этого datetime, но указанный с использованием определения Qt::LocalTime.

Пример:

QDateTime UTC(QDateTime::currentDateTimeUtc());
QDateTime local(UTC.toLocalTime());
qDebug() << "UTC time is:" << UTC;
qDebug() << "Local time is:" << local;
qDebug() << "No difference between times:" << UTC.secsTo(local);

См. также toTimeSpec().

qint64 QDateTime::toMSecsSinceEpoch() const

Возвращает datetime в виде количества миллисекунд, прошедших с 1970-01-01T00:00:00.000, по координированному всемирному времени (Qt::UTC).

На системах, не поддерживающих часовые пояса, эта функция будет вести себя так, как будто локальное время было Qt::UTC.

Поведение этой функции не определено, если datetime, хранящийся в этом объекте, некорректен. Однако, для всех корректных дат, эта функция возвращает уникальное значение.

См. также toSecsSinceEpoch() и setMSecsSinceEpoch().

[since 5.5] NSDate *QDateTime::toNSDate() const

Создаёт NSDate из QDateTime.

Объект NSDate автоматически освобождается.

Эта функция была добавлена в Qt 5.5.

См. также fromNSDate().

[since 5.2] QDateTime QDateTime::toOffsetFromUtc(int offsetSeconds) const

Возвращает копию этого datetime, преобразованного в спектр Qt::OffsetFromUTC с заданным offsetSeconds.

Если offsetSeconds равно 0, то будет возвращён UTC datetime.

Эта функция была добавлена в Qt 5.2.

См. также setOffsetFromUtc(), offsetFromUtc() и toTimeSpec().

[since 5.8] qint64 QDateTime::toSecsSinceEpoch() const

Возвращает datetime в виде количества секунд, прошедших с 1970-01-01T00:00:00.000, по координированному всемирному времени (Qt::UTC).

На системах, не поддерживающих часовые пояса, эта функция будет вести себя так, как будто локальное время было Qt::UTC.

Поведение этой функции не определено, если datetime, хранящийся в этом объекте, некорректен. Однако, для всех корректных дат, эта функция возвращает уникальное значение.

Эта функция была добавлена в Qt 5.8.

См. также toMSecsSinceEpoch() и setSecsSinceEpoch().

QString QDateTime::toString(Qt::DateFormat format = Qt::TextDate) const

Это перегруженная функция.

Возвращает datetime в виде строки в указанном формате format.

Если format равен Qt::TextDate, строка форматируется стандартным способом. Дни недели и месяца будут на английском языке. Пример такого формата: "Ср Май 20 03:40:13 1998". Для локализованного формата, см. QLocale::toString().

Если format равен Qt::ISODate, формат строки соответствует расширенному стандарту ISO 8601 для представления дат и времени, имея вид yyyy-MM-ddTHH:mm:ss[Z|[+|-]HH:mm], в зависимости от timeSpec() объекта QDateTime. Если timeSpec() равен Qt::UTC, к строке будет добавлен Z; если timeSpec() равен Qt::OffsetFromUTC, к строке будет добавлен смещение от UTC в часах и минутах. Для включения миллисекунд в дату ISO 8601, используйте format Qt::ISODateWithMs, который соответствует yyyy-MM-ddTHH:mm:ss.zzz[Z|[+|-]HH:mm].

Если format равен Qt::RFC2822Date, строка форматируется в соответствии с RFC 2822.

Если datetime некорректен, будет возвращена пустая строка.

Предупреждение: Формат Qt::ISODate корректен только для годов в диапазоне от 0 до 9999.

См. также fromString(), QDate::toString(), QTime::toString() и QLocale::toString().

QDateTime QDateTime::toTimeSpec(Qt::TimeSpec spec) const

Возвращает копию этого datetime, преобразованного в указанный временной спектр spec.

Если spec равен Qt::OffsetFromUTC, он устанавливается в Qt::UTC. Для установки в Qt::OffsetFromUTC используйте toOffsetFromUtc().

Если spec равен Qt::TimeZone, он устанавливается в Qt::LocalTime, т. е. локальная часовая зона.

Пример:

QDateTime local(QDateTime::currentDateTime());
QDateTime UTC(local.toTimeSpec(Qt::UTC));
qDebug() << "Local time is:" << local;
qDebug() << "UTC time is:" << UTC;
qDebug() << "No difference between times:" << local.secsTo(UTC);

См. также timeSpec(), toTimeZone() и toOffsetFromUtc().

[since 5.2] QDateTime QDateTime::toTimeZone(const QTimeZone &timeZone) const

Возвращает копию текущей даты и времени, преобразованную в заданную временную зону timeZone.

Эта функция была добавлена в Qt 5.2.

См. также timeZone() и toTimeSpec().

QDateTime QDateTime::toUTC() const

Возвращает дату и время, содержащие информацию о дате и времени из текущей даты и времени, но указанные с помощью определения Qt::UTC.

Пример:

QDateTime local(QDateTime::currentDateTime());
QDateTime UTC(local.toUTC());
qDebug() << "Local time is:" << local;
qDebug() << "UTC time is:" << UTC;
qDebug() << "No difference between times:" << local.secsTo(UTC);

См. также toTimeSpec().

Связанные нечленные функции

bool operator!=(const QDateTime &lhs, const QDateTime &rhs)

Возвращает true если lhs отличается от rhs; в противном случае возвращает false.

Две даты и время различаются, если различаются компоненты даты, времени или временной зоны. Начиная с Qt 5.14, все невалидные даты и время равны (и меньше всех валидных дат и времени).

См. также operator==().

bool operator<(const QDateTime &lhs, const QDateTime &rhs)

Возвращает true если lhs предшествует rhs; в противном случае возвращает false.

См. также operator==().

QDataStream &operator<<(QDataStream &out, const QDateTime &dateTime)

Записывает dateTime в поток out.

См. также Сериализация типов данных Qt.

bool operator<=(const QDateTime &lhs, const QDateTime &rhs)

Возвращает true если lhs предшествует или равно rhs; в противном случае возвращает false.

См. также operator==().

bool operator==(const QDateTime &lhs, const QDateTime &rhs)

Возвращает true если lhs равно rhs; в противном случае возвращает false.

Две даты и время различаются, если различаются компоненты даты, времени или временной зоны. Начиная с Qt 5.14, все невалидные даты и время равны (и меньше всех валидных дат и времени).

См. также operator!=(), operator<(), operator<=(), operator>(), и operator>=().

bool operator>(const QDateTime &lhs, const QDateTime &rhs)

Возвращает true если lhs следует за rhs; в противном случае возвращает false.

См. также operator==().

bool operator>=(const QDateTime &lhs, const QDateTime &rhs)

Возвращает true если lhs следует за или равно rhs; в противном случае возвращает false.

См. также operator==().

QDataStream &operator>>(QDataStream &in, QDateTime &dateTime)

Читает дату и время из потока in в dateTime.

См. также Сериализация типов данных Qt.

© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.1/qdatetime.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API