Spec-Zone.ru › Qt 5.15

Класс QDateTime

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

Заголовок: #include <QDateTime>
qmake: QT += core
  • Список всех членов, включая унаследованные
  • Устаревшие члены

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

Открытые типы

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

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

QDateTime(QDateTime &&other)
QDateTime(const QDateTime &other)
QDateTime(const QDate &date, const QTime &time, const QTimeZone &timeZone)
QDateTime(const QDate &date, const QTime &time, Qt::TimeSpec spec, int offsetSeconds)
QDateTime(const QDate &date, const QTime &time, Qt::TimeSpec spec = Qt::LocalTime)
QDateTime(const QDate &date)
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(const QDate &date)
void setMSecsSinceEpoch(qint64 msecs)
void setOffsetFromUtc(int offsetSeconds)
void setSecsSinceEpoch(qint64 secs)
void setTime(const 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) const
QString toString(Qt::DateFormat format = Qt::TextDate) const
QString toString(const QString &format, QCalendar cal) const
QString toString(QStringView format) const
QString toString(QStringView format, QCalendar cal) const
QDateTime toTimeSpec(Qt::TimeSpec spec) const
QDateTime toTimeZone(const QTimeZone &timeZone) const
QDateTime toUTC() const
bool operator!=(const QDateTime &other) const
bool operator<(const QDateTime &other) const
bool operator<=(const QDateTime &other) const
bool operator==(const QDateTime &other) const
bool operator>(const QDateTime &other) const
bool operator>=(const QDateTime &other) const

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

QDateTime текущееВремя()
QDateTime текущееВремяUtc()
qint64 текущиеМиллисекундыСЭпохи()
qint64 текущиеСекундыСЭпохи()
QDateTime изCFDate(CFDateRef date)
QDateTime изМиллисекундСЭпохи(qint64 msecs)
QDateTime изМиллисекундСЭпохи(qint64 msecs, Qt::TimeSpec spec, 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 изСтроки(const QString &string, const QString &format, QCalendar cal)

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

QDataStream & operator<<(QDataStream &out, const QDateTime &dateTime)
QDataStream & operator>>(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 не учитывает високосные секунды.

Примечания

Год 0 отсутствует

Года 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 обычно имеет точную информацию о прошлых переходах (включая DST, см. ниже), когда это возможно. В Windows, где система не поддерживает исторические данные о часовых поясах, историческая точность не поддерживается в отношении переходов между часовыми поясами, в частности, включая DST.

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

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

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

Смещения от UTC

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

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

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

перечисление 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) const

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

QString QDateTime::toString(const QString &format) const

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

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

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

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

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

Формат Результат
dd.MM.yyyy 21.05.2001
ddd MMMM d yy Втр Май 21 01
hh:mm:ss.zzz 14:13:09.120
hh:mm:ss.z 14:13:09.12
h:m:s ap 2:13:9 pm

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

Примечание: Если требуются локализованные названия месяцев и дней, используйте QLocale::system().toString() как метод QDateTime будет использовать английские (C-локаль) имена в Qt 6.

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

QDateTime::QDateTime(QDateTime &&other)

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

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

QDateTime::QDateTime(const QDateTime &other)

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

QDateTime::QDateTime(const QDate &date, const QTime &time, const QTimeZone &timeZone)

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

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

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

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

QDateTime::QDateTime(const QDate &date, const QTime &time, Qt::TimeSpec spec, int offsetSeconds)

Создаёт дату и время с заданной 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 используйте правильный конструктор.

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

QDateTime::QDateTime(const QDate &date, const QTime &time, Qt::TimeSpec spec = Qt::LocalTime)

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

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

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

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

QDateTime::QDateTime(const QDate &date)

Создаёт дату и время с заданной date, используя Qt::LocalTime как timeSpec() и время в начале этого дня.

См. также QDate::startOfDay().

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.

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

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

[static] qint64 QDateTime::currentMSecsSinceEpoch()

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

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

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

[static] 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] QDateTime QDateTime::fromCFDate(CFDateRef date)

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

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

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

[static] QDateTime QDateTime::fromMSecsSinceEpoch(qint64 msecs)

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

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

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

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

[static] QDateTime QDateTime::fromMSecsSinceEpoch(qint64 msecs, Qt::TimeSpec spec, 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, т.е. текущий системный часовой пояс.

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

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

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

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

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

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

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

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

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

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

[static] 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] 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"). Хотя локальные названия месяцев также могут использоваться в Qt 5, они зависят от настроек локали пользователя.

Примечание: Поддержка локальных дат, включая форматы Qt::SystemLocaleDate, Qt::SystemLocaleShortDate, Qt::SystemLocaleLongDate, Qt::LocaleDate, Qt::DefaultLocaleShortDate и Qt::DefaultLocaleLongDate, будет удалена в Qt 6. Используйте QLocale::toDateTime() вместо этого.

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

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

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

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

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

Выражение Результат
t часовой пояс (например, "CEST")

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

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. Выражения, у которых нет ведущих нулей (d, M, h, m, s, 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);

Для любого поля, которое не представлено в формате, используются следующие значения по умолчанию:

Поле Значение по умолчанию
Год 1900
Месяц 1 (январь)
День 1
Час 0
Минута 0
Секунда 0

Например:

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.

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

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

bool QDateTime::isDaylightTime() const

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

Если 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().

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(const 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 приведет к неопределённому поведению.

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

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

void QDateTime::setOffsetFromUtc(int offsetSeconds)

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

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

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

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

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

void QDateTime::setSecsSinceEpoch(qint64 secs)

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

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

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

void QDateTime::setTime(const 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, то 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.

void QDateTime::setTimeZone(const QTimeZone &toZone)

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

Если toZone недействительна, то datetime будет недействительным.

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

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

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.

QTimeZone QDateTime::timeZone() const

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

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

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

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

QString QDateTime::timeZoneAbbreviation() const

Возвращает сокращение временной зоны для datetime.

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

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

Если timeSpec() равно Qt::LocalTime, то от системы запросится правильное сокращение.

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

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

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

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

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, хранящийся в этом объекте, недействителен. Однако для всех действительных дат эта функция возвращает уникальное значение.

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

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

NSDate *QDateTime::toNSDate() const

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

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

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

QDateTime QDateTime::toOffsetFromUtc(int offsetSeconds) const

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

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

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

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

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, строка форматируется стандартным способом. Имена дней и месяцев будут локализованы с использованием системной локали, т.е. QLocale::system(). Пример такого форматирования: "Ср май 20 03:40:13 1998".

Если 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::SystemLocaleDate, Qt::SystemLocaleShortDate и Qt::SystemLocaleLongDate будут удалены в Qt 6. Их использование следует заменить на QLocale::system().toString(datetime, QLocale::ShortFormat) или QLocale::system().toString(datetime, QLocale::LongFormat).

Опции format Qt::LocaleDate, Qt::DefaultLocaleShortDate и Qt::DefaultLocaleLongDate будут удалены в Qt 6. Их использование следует заменить на QLocale().toString(datetime, QLocale::ShortFormat) или QLocale().toString(datetime, QLocale::LongFormat).

Если 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().

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 QDateTime::operator!=(const QDateTime &other) const

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

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

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

bool QDateTime::operator<(const QDateTime &other) const

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

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

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

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

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

Начиная с версии 5.14, все недействительные даты и времена равны друг другу и отличаются от всех других дат и времени.

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

bool QDateTime::operator>(const QDateTime &other) const

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

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

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

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

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

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

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

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-5.15/qdatetime.html

Spec-Zone.ru

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