Spec-Zone.ru › Qt

Класс 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 operator!=(const QDateTime &lhs, const QDateTime &rhs)
bool operator<(const QDateTime &lhs, const QDateTime &rhs)
QDataStream & operator<<(QDataStream &out, const QDateTime &dateTime)
bool operator<=(const QDateTime &lhs, const QDateTime &rhs)
bool operator==(const QDateTime &lhs, const QDateTime &rhs)
bool operator>(const QDateTime &lhs, const QDateTime &rhs)
bool operator>=(const QDateTime &lhs, const QDateTime &rhs)
QDataStream & operator>>(QDataStream &in, QDateTime &dateTime)

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

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

QDateTime может описывать даты и время относительно местного времени, UTC, указанного смещения от UTC или указанной временной зоны в сочетании с классом QTimeZone. Например, временная зона «Europe/Berlin» будет применять правила летнего времени, используемые в Германии. В отличие от этого, смещение от 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 — это год «до Рождества Христова» или «до нашей эры». День перед 1 января 1 года н. э. — 31 декабря 1 г. до н. э.

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

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

Использование временных зон

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

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

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

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

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

Для дат и времени, которые система time_t может представить (с 1901-12-14 по 2038-01-18 на системах с 32-разрядными time_t; для полного диапазона QDateTime, если тип 64-разрядный), используются стандартные системные API для определения смещения местного времени от UTC. Для дат и времени, не обрабатываемых этими системными API, используется QTimeZone::systemTimeZone() . В любом случае, используемая информация о смещении зависит от системы и может быть неполной или, для прошлых времен, исторически неточной. В любом случае, для будущих дат, смещения и правила DST местного часового пояса могут измениться до наступления этой даты.

Смещения от 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
сб май 21 01 Вт май 21 01
чч:мм:сс.ззз 14:13:09.120
чч:мм:сс.з 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, то спецификация будет установлена в Qt::LocalTime, т.е. текущий часовой пояс системы. Чтобы создать временную метку Qt::TimeZone, используйте соответствующий конструктор.

QDateTime::QDateTime()

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

Нулевая временная метка недействительна, так как её дата и время недействительны.

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

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

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

QDateTime::~QDateTime()

Удаляет временную метку.

QDateTime QDateTime::addDays(qint64 ndays) const

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

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

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

QDateTime QDateTime::addMSecs(qint64 msecs) const

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

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

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

QDateTime QDateTime::addMonths(int nmonths) const

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

Если timeSpec() равно Qt::LocalTime или Qt::TimeZone, и полученная дата и время попадают на границу перехода между стандартным и летним временем, то результат будет скорректирован соответствующим образом, т.е. если переход происходит в 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 или Qt::TimeZone, и полученная дата и время попадают в промежуток перехода с летнего на зимнее время, то результат будет скорректирован соответственно. То есть, если переход происходит в 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, то формат будет установлен в Qt::UTC, то есть смещение 0 секунд.

Если spec равен Qt::TimeZone, то формат будет установлен в 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, то формат будет установлен в Qt::UTC, то есть смещение 0 секунд.

Если spec равен Qt::TimeZone, то формат будет установлен в 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, используя заданный формат format, или некорректную дату и время, если строка не может быть проанализирована.

Использует календарь 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

Возвращает значение true, если эта дата и время попадают на летнее время, и false в противном случае.

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

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

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

bool QDateTime::isNull() const

Возвращает true если дата и время равны null; в противном случае возвращает false. Дата и время null являются некорректными.

См. также 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 Возвращается смещение, используемое часовым поясом.

В двух последних случаях возвращается смещение на эту дату и время, учитывая смещение летнего времени. Смещение представляет собой разницу между местным временем или временем в заданном часовом поясе и временем 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)

Устанавливает часть даты этого объекта datetime на 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)

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

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

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

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

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

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

Если spec равно Qt::TimeZone, то spec будет установлено на 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)

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

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

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

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

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

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

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

QTime QDateTime::time() const

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

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

Qt::TimeSpec QDateTime::timeSpec() const

Возвращает спецификацию времени объекта даты и времени.

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

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

Возвращает часовой пояс объекта даты и времени.

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

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

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

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

Возвращает сокращение часового пояса для этого объекта даты и времени.

Возвращаемая строка зависит от timeSpec():

  • Для Qt::UTC это "UTC".
  • Для Qt::OffsetFromUTC она будет в формате "UTC[+-]00:00".
  • Для Qt::LocalTime запрос производится к системе.
  • Для Qt::TimeZone запрос производится к связанному объекту QTimeZone.

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

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

См. также timeSpec() и QTimeZone::abbreviation().

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

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

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

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

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

QDateTime QDateTime::toLocalTime() const

Возвращает объект даты и времени, содержащий информацию о дате и времени из этого объекта даты и времени, но заданный с использованием определения 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

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

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

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

См. также 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

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

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

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

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

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

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

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

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

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

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

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

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

Возвращает объект даты и времени в виде строки в заданном формате format.

Если format равен Qt::TextDate, строка форматируется стандартным способом. Названия дня и месяца будут на английском языке. Пример такого форматирования: "Wed May 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.

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

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

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

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

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

Если spec равен Qt::OffsetFromUTC, то он устанавливается в Qt::UTC. Чтобы установить значение spec в 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.

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

См. также 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.

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

См. также 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)

Читает значение datetime из потока in в dateTime.

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

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

Spec-Zone.ru

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