Spec-Zone.ru › Qt 5.11

Класс QDateTime

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

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

Примечание: Все функции в этом классе являются повторно входящими.

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

QDateTime()
QDateTime(const QDate &date)
QDateTime(const QDate &date, const QTime &time, Qt::TimeSpec spec = Qt::LocalTime)
QDateTime(const QDate &date, const QTime &time, Qt::TimeSpec spec, int offsetSeconds)
QDateTime(const QDate &date, const QTime &time, const QTimeZone &timeZone)
QDateTime(const QDateTime &other)
QDateTime(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(QStringView format) 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
QDateTime & operator=(QDateTime &&other)
QDateTime & operator=(const QDateTime &other)
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)

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

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

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

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

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

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

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

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

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

QDateTime может хранить даты и время как местное время или как UTC. QDateTime::currentDateTime() возвращает QDateTime, выраженное в местном времени; используйте toUTC(), чтобы преобразовать его в UTC. Также можно использовать timeSpec(), чтобы определить, хранит ли объект QDateTime время UTC или местное время. Операции, такие как addSecs() и secsTo(), учитывают переходы на летнее время (DST).

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

Примечания

Отсутствие года 0

Года 0 нет. Даты в этом году считаются недействительными. Год -1 - это год "1 до нашей эры" или "1 до текущей эры". День перед 1 января 1 года н. э. - 31 декабря 1 года до н. э.

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

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

Использование системного часового пояса

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

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

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

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

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

Смещение от UTC

Также поддерживается Qt::TimeSpec Qt::OffsetFromUTC. Это позволяет определить QDateTime относительно UTC с фиксированным смещением в определенное количество секунд от UTC. Например, смещение +3600 секунд - это на час вперед по сравнению с UTC, которое обычно записывается в стандартном формате ISO как "UTC+01:00". Летнее время никогда не применяется с этим значением TimeSpec.

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

Поддержка часовых поясов

Также поддерживается Qt::TimeSpec Qt::TimeZone в сочетании с классом QTimeZone. Это позволяет определить дату и время в указанном часовом поясе, соблюдая согласованный набор правил перехода на летнее время. Например, часовой пояс "Europe/Berlin" будет применять правила перехода на летнее время, используемые в Германии с 1970 года. Обратите внимание, что применяемые правила перехода зависят от поддержки платформы. Более подробную информацию см. в документации к QTimeZone.

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

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

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

QString QDateTime::toString(QStringView format) const

Возвращает дату и время в виде строки. Параметр format определяет формат результирующей строки.

Эти выражения могут быть использованы для даты:

Выражение Вывод
d день в виде числа без ведущего нуля (от 1 до 31)
dd день в виде числа с ведущим нулем (от 01 до 31)
ddd сокращённое локальное имя дня (например, 'Пн' по 'Вс'). Использует системный локаль, т.е. QLocale::system().
dddd полное локальное имя дня (например, 'Понедельник' по 'Воскресенье'). Использует системный локаль, т.е. QLocale::system().
M номер месяца без ведущего нуля (1-12)
MM номер месяца с ведущим нулем (01-12)
MMM сокращённое локальное имя месяца (например, 'Янв' по 'Дек'). Использует системный локаль, т.е. QLocale::system().
MMMM полное локальное имя месяца (например, 'Январь' по 'Декабрь'). Использует системный локаль, т.е. QLocale::system().
yy год в виде двузначного числа (00-99)
yyyy год в виде четырёхзначного числа

Эти выражения могут быть использованы для времени:

Выражение Вывод
h час без ведущего нуля (0 до 23 или 1 до 12, если отображаются AM/PM)
hh час с ведущим нулем (00 до 23 или 01 до 12, если отображаются AM/PM)
H час без ведущего нуля (0 до 23, даже с отображением AM/PM)
HH час с ведущим нулем (00 до 23, даже с отображением AM/PM)
m минута без ведущего нуля (0 до 59)
mm минута с ведущим нулем (00 до 59)
s целая секунда без ведущего нуля (0 до 59)
ss целая секунда с ведущим нулем, если применимо (00 до 59)
z дробная часть секунды, после десятичной точки, без хвостовых нулей (0 до 999). Таким образом "s.z" сообщает секунды с полной доступной (миллисекундной) точностью без хвостовых нулей.
zzz дробная часть секунды с точностью до миллисекунды, включая хвостовые нули, если применимо (000 до 999).
AP или A использовать отображение AM/PM. A/AP будет заменено на "AM" или "PM".
ap или a использовать отображение am/pm. a/ap будет заменено на "am" или "pm".
t часовой пояс (например, "CEST")

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

Примеры строк формата (предполагается, что 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 пп

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

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

QDateTime::QDateTime()

Создаёт объект null datetime (т.е. null дату и null время). Null datetime недействителен, так как дата недействительна.

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

QDateTime::QDateTime(const QDate &date)

Создаёт datetime с заданной date, корректным временем (00:00:00.000) и устанавливает timeSpec() в Qt::LocalTime.

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

Создаёт datetime с заданной date и time, используя заданный spec.

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

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

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

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

Создаёт datetime с заданной 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, т.е. текущий часовой пояс системы. Для создания datetime Qt::TimeZone используйте соответствующий конструктор.

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

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

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

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

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

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

QDateTime::QDateTime(const QDateTime &other)

Создаёт копию datetime other.

QDateTime::QDateTime(QDateTime &&other)

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

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

QDateTime::~QDateTime()

Уничтожает datetime.

QDateTime QDateTime::addDays(qint64 ndays) const

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

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

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

QDateTime QDateTime::addMSecs(qint64 msecs) const

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

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

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

QDateTime QDateTime::addMonths(int nmonths) const

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

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

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

END_OF_DOCUMENT_MARKER

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»). Хотя можно использовать и локальные названия месяцев, они зависят от настроек локали пользователя.

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

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

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

Эти выражения могут использоваться для части даты строки формата:

Выражение Результат
d день как число без ведущего нуля (1–31)
dd день как число с ведущим нулем (01–31)
ddd сокращённое локальное название дня (например, «Пн» по «Вс»). Использует QDate::shortDayName().
dddd полное локальное название дня (например, «Понедельник» по «Воскресенье»). Использует QDate::longDayName().
M месяц как число без ведущего нуля (1–12)
MM месяц как число с ведущим нулем (01–12)
MMM сокращённое локальное название месяца (например, «Янв» по «Дек»). Использует QDate::shortMonthName().
MMMM полное локальное название месяца (например, «Январь» по «Декабрь»). Использует QDate::longMonthName().
yy год как двузначное число (00–99)
yyyy год как четырёхзначное число

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

Эти выражения могут использоваться для части времени строки формата:

Выражение Результат
h час без ведущего нуля (0–23 или 1–12, если отображаются AM/PM)
hh час с ведущим нулем (00–23 или 01–12, если отображаются AM/PM)
H час без ведущего нуля (0–23, даже при отображении AM/PM)
HH час с ведущим нулем (00–23, даже при отображении AM/PM)
m минута без ведущего нуля (0–59)
mm минута с ведущим нулем (00–59)
s полная секунда без ведущего нуля (0–59)
ss полная секунда с ведущим нулем, где применимо (00–59)
z дробная часть секунды, идущая после десятичной точки, без хвостовых нулей (0–999). Таким образом, "s.z" сообщает о секундах с максимальной доступной (миллисекундной) точностью без хвостовых нулей.
zzz дробная часть секунды с точностью до миллисекунд, включая хвостовые нули, где применимо (000–999).
AP или A интерпретировать как время AM/PM. AP должно быть либо «AM», либо «PM».
ap или a Интерпретировать как время AM/PM. ap должно быть либо «am», либо «pm».

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

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.

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

bool QDateTime::isDaylightTime() const

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

Если 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 считается недействительным.

См. также 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::OffsetFromUTC, это будет значение, изначально установленное.

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

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

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

Эта функция была добавлена в 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), QTime(0, 0));
qDebug("There are %d seconds to Christmas", now.secsTo(xmas));

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

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

Эта функция была добавлена в 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)

Устанавливает часть времени этой даты и времени в 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, то спецификация будет установлена в 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)

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

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

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

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

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.

QTimeZone QDateTime::timeZone() const

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

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

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

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

QString QDateTime::timeZoneAbbreviation() const

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

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

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

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

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

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

NSDate *QDateTime::toNSDate() const

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

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

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

QDateTime QDateTime::toOffsetFromUtc(int offsetSeconds) const

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

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

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

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

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

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

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

Если формат равен Qt::TextDate, строка форматируется стандартным способом. QDate::shortDayName(), QDate::shortMonthName() и QTime::toString() используются для создания строки, поэтому имена дня и месяца будут локализованными именами, используя системный язык, т.е. QLocale::system(). Примером такого форматирования является "Ср май 20 03:40:13 1998".

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

Если формат равен Qt::SystemLocaleShortDate или Qt::SystemLocaleLongDate, формат строки зависит от параметров локали системы. Идентично вызову QLocale::system().toString(datetime, QLocale::ShortFormat) или QLocale::system().toString(datetime, QLocale::LongFormat).

Если формат равен Qt::DefaultLocaleShortDate или Qt::DefaultLocaleLongDate, формат строки зависит от локальных параметров приложения по умолчанию. Это локали, установленная с помощью QLocale::setDefault(), или системная локали, если локаль по умолчанию не установлена. Идентично вызову QLocale().toString(datetime, QLocale::ShortFormat) или QLocale().toString(datetime, QLocale::LongFormat).

Если формат равен 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. Чтобы установить 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(), toUTC() и toLocalTime().

QDateTime QDateTime::toTimeZone(const QTimeZone &timeZone) const

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

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

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

QDateTime QDateTime::toUTC() const

Возвращает datetime, содержащий данные даты и времени в этом datetime, но указанный с помощью определения 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 если этот datetime отличается от datetime other; в противном случае возвращает false.

Два datetime отличаются, если различаются либо компоненты даты, либо времени, либо часового пояса.

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

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

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

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

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

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

Оператор перемещающей присваивания.

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

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

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

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

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

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

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

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

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

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

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

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

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

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/archives/qt-5.11/qdatetime.html

Spec-Zone.ru

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