Spec-Zone.ru › Qt 5.13

Класс QDateTime

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

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

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

Публичные функции

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(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
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 кодирует календарную дату и время («дата и время»). Он объединяет возможности классов 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 как значение сериализованных миллисекунд, кодирующее дату и время. Это ограничивает диапазон дат примерно до +/- 292 миллионов лет, по сравнению с диапазоном QDate +/- 2 миллиарда лет. Необходимо проявлять осторожность при создании QDateTime с экстремальными значениями, чтобы не вызвать переполнение хранилища. Точный диапазон поддерживаемых значений варьируется в зависимости от Qt::TimeSpec и временной зоны.

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

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

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

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

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

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

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

Смещения от UTC

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

См. также 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 дробная часть секунды после десятичной точки, без trailing нулей (0–999). Таким образом, "s.z" сообщает о секундах с полной доступной точностью (миллисекунды) без trailing нулей.
zzz дробная часть секунды с точностью до миллисекунды, включая trailing нули, если применимо (000–999).
AP or A использовать отображение AM/PM. A/AP будет заменено на "AM" или "PM".
ap or 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(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, то спецификация будет установлена в 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, то спецификация будет установлена в Qt::LocalTime, т.е. текущий системный часовой пояс. Для создания даты и времени Qt::TimeZone используйте соответствующий конструктор.

QDateTime::QDateTime(const QDate &date)

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

QDateTime::QDateTime()

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

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

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

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

QDateTime::~QDateTime()

Уничтожает объект QDateTime.

QDateTime QDateTime::addDays(qint64 ndays) const

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

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

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

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

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

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

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

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

bool QDateTime::isNull() const

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

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

bool QDateTime::isValid() const

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

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

См. также 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 раньше, возвращаемое значение отрицательно.

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

Возвращает 0, если любой из объектов QDateTime некорректен.

Пример:

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)

Устанавливает часть даты этого объекта QDateTime на 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. Объект QDateTime будет ссылаться на другую точку во времени.

Максимальное и минимальное смещение составляет 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)

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

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

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

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

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

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

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

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

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

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

void QDateTime::swap(QDateTime &other)

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

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

QTime QDateTime::time() const

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

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

Qt::TimeSpec QDateTime::timeSpec() const

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

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

QTimeZone QDateTime::timeZone() const

Возвращает часовой пояс объекта QDateTime.

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

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

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

QString QDateTime::timeZoneAbbreviation() const

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

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

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

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

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

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

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

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

NSDate *QDateTime::toNSDate() const

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

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

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

QDateTime QDateTime::toOffsetFromUtc(int offsetSeconds) const

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

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

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

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

qint64 QDateTime::toSecsSinceEpoch() const

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

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

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

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

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

END_OF_DOCUMENT_MARKER

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».

Если 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::SystemLocaleShortDate или Qt::SystemLocaleLongDate, формат строки зависит от языковых настроек системы. Идентично вызову QLocale::system().toString(datetime, QLocale::ShortFormat) или QLocale::system().toString(datetime, QLocale::LongFormat).

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

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

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

Предупреждение: формат Qt::ISODate действителен только для годов в диапазоне от 0 до 9999. Это ограничение может также применяться к локально-зависимым форматам, в зависимости от настроек локали.

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

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

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

Если spec равен Qt::OffsetFromUTC, он устанавливается в Qt::UTC. Для установки в 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.

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

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

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

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

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

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

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

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

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

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

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

QDataStream &QDateTime::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.13/qdatetime.html

Spec-Zone.ru

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