Spec-Zone.ru › Qt 5.12

Класс 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 fromCFDate(CFDateRef date)
QDateTime fromMSecsSinceEpoch(qint64 msecs)
QDateTime fromMSecsSinceEpoch(qint64 msecs, Qt::TimeSpec spec, int offsetSeconds = 0)
QDateTime fromMSecsSinceEpoch(qint64 msecs, const QTimeZone &timeZone)
QDateTime fromNSDate(const NSDate *date)
QDateTime fromSecsSinceEpoch(qint64 secs, Qt::TimeSpec spec = Qt::LocalTime, int offsetSeconds = 0)
QDateTime fromSecsSinceEpoch(qint64 secs, const QTimeZone &timeZone)
QDateTime fromString(const QString &string, Qt::DateFormat format = Qt::TextDate)
QDateTime fromString(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(), учитывают летнее время.

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

Замечания

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

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

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

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

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

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

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

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

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

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

Смещение от 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")

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

Форматы без разделителей (например, "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 пп

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

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

QDateTime::QDateTime()

Конструирует нулевую дату и время (т.е. нулевую дату и нулевое время). Нулевая дата и время недействительны, так как дата недействительна.

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

QDateTime::QDateTime(const QDate &date)

Конструирует дату и время с заданной date, допустимым временем(00:00:00.000), и устанавливает timeSpec() на Qt::LocalTime.

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, 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, const QTimeZone &timeZone)

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

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

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

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

QDateTime::QDateTime(const QDateTime &other)

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

QDateTime::QDateTime(QDateTime &&other)

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

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

QDateTime::~QDateTime()

Уничтожает объект даты и времени.

QDateTime QDateTime::addDays(qint64 ndays) const

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

Если timeSpec() — Qt::LocalTime, и результирующая дата и время попадают в период перехода между стандартным и летним временем, то результат будет скорректирован соответственно, т.е. если переход происходит в 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, и результирующая дата и время попадают в период перехода между стандартным и летним временем, то результат будет скорректирован соответственно, т.е. если переход происходит в 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:00, а время переводится на 3:00, и результат попадает между 2:00 и 3:00, то результат будет скорректирован, чтобы соответствовать 3:00.

См. также 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 по всемирному координированному времени (UTC). Это значение аналогично переменной POSIX time_t, но выражено в миллисекундах.

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

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

[static] qint64 QDateTime::currentSecsSinceEpoch()

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

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

END_OF_DOCUMENT_MARKER

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

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

Примечание для Qt::TextDate: Рекомендуется использовать английские сокращённые названия месяцев (например, "Jan"). Несмотря на то, что можно использовать и локализованные названия месяцев, они зависят от настроек локали пользователя.

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

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

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

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

Выражение Вывод
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

Возвращает значение 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:00 и время переходит на 3:00, то время с 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, то 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)

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

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

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

Если format равен 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Возвращает true если это datetime позже или равно other datetime; в противном случае возвращает 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/qt-5.12/qdatetime.html

Spec-Zone.ru

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