이 페이지에서

QDateTime Class

QDateTime 클래스는 날짜 및 시간 관련 기능을 제공합니다. 더 보기...

헤더: #include <QDateTime>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

참고: 이 클래스의 모든 함수는 재진입 가능합니다.

QDateTime 비교

범주비교 가능한 유형
weakQDateTime

공개 유형

(since 6.7) enum class TransitionResolution { Reject, RelativeToBefore, RelativeToAfter, PreferBefore, PreferAfter, …, PreferDaylightSaving }
enum class YearRange { First, Last }

공개 함수

QDateTime(QDate date, QTime time, const QTimeZone &timeZone, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)
QDateTime()
(since 6.5) QDateTime(QDate date, QTime time, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)
QDateTime(const QDateTime &other)
QDateTime(QDateTime &&other)
~QDateTime()
QDateTime addDays(qint64 ndays) const
(since 6.4) QDateTime addDuration(std::chrono::milliseconds msecs) const
QDateTime addMSecs(qint64 msecs) const
QDateTime addMonths(int nmonths) const
QDateTime addSecs(qint64 s) const
QDateTime addYears(int nyears) const
QDate date() const
qint64 daysTo(const QDateTime &other) const
bool isDaylightTime() const
bool isNull() const
bool isValid() const
qint64 msecsTo(const QDateTime &other) const
int offsetFromUtc() const
qint64 secsTo(const QDateTime &other) const
void setDate(QDate date, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)
void setMSecsSinceEpoch(qint64 msecs)
void setSecsSinceEpoch(qint64 secs)
void setTime(QTime time, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)
void setTimeZone(const QTimeZone &toZone, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)
void swap(QDateTime &other)
QTime time() const
(since 6.5) QTimeZone timeRepresentation() 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
(since 6.4) std::chrono::sys_time<std::chrono::milliseconds> toStdSysMilliseconds() const
(since 6.4) std::chrono::sys_seconds toStdSysSeconds() const
QString toString(const QString &format, QCalendar cal) const
QString toString(QStringView format) const
QString toString(Qt::DateFormat format = Qt::TextDate) const
QString toString(const QString &format) const
QString toString(QStringView format, QCalendar cal) const
QDateTime toTimeZone(const QTimeZone &timeZone) const
QDateTime toUTC() const
(since 6.4) QDateTime &operator+=(std::chrono::milliseconds duration)
(since 6.4) QDateTime &operator-=(std::chrono::milliseconds duration)
QDateTime &operator=(const QDateTime &other)

정적 공용 멤버

(since 6.5) QDateTime currentDateTime(const QTimeZone &zone)
QDateTime currentDateTime()
QDateTime currentDateTimeUtc()
qint64 currentMSecsSinceEpoch()
qint64 currentSecsSinceEpoch()
QDateTime fromCFDate(CFDateRef date)
QDateTime fromMSecsSinceEpoch(qint64 msecs, const QTimeZone &timeZone)
QDateTime fromMSecsSinceEpoch(qint64 msecs)
QDateTime fromNSDate(const NSDate *date)
QDateTime fromSecsSinceEpoch(qint64 secs, const QTimeZone &timeZone)
QDateTime fromSecsSinceEpoch(qint64 secs)
(since 6.4) QDateTime fromStdLocalTime(const std::chrono::local_time<std::chrono::milliseconds> &time)
(since 6.4) QDateTime fromStdTimePoint(const std::chrono::time_point<Clock, Duration> &time)
(since 6.4) QDateTime fromStdTimePoint(const std::chrono::local_time<std::chrono::milliseconds> &time)
(since 6.4) QDateTime fromStdTimePoint(std::chrono::time_point<std::chrono::system_clock, std::chrono::milliseconds> time)
(since 6.4) QDateTime fromStdZonedTime(const std::chrono::zoned_time<std::chrono::milliseconds, const std::chrono::time_zone *> &time)
QDateTime fromString(const QString &string, const QString &format, int baseYear, QCalendar cal)
(since 6.0) QDateTime fromString(QStringView string, Qt::DateFormat format = Qt::TextDate)
QDateTime fromString(const QString &string, Qt::DateFormat format = Qt::TextDate)
(since 6.0) QDateTime fromString(QStringView string, QStringView format, QCalendar cal)
(since 6.7) QDateTime fromString(QStringView string, QStringView format, int baseYear = QLocale::DefaultTwoDigitBaseYear)
(since 6.0) QDateTime fromString(const QString &string, QStringView format, QCalendar cal)
(since 6.7) QDateTime fromString(const QString &string, QStringView format, int baseYear = QLocale::DefaultTwoDigitBaseYear)
QDateTime fromString(const QString &string, const QString &format, QCalendar cal)
(since 6.7) QDateTime fromString(const QString &string, const QString &format, int baseYear = QLocale::DefaultTwoDigitBaseYear)
(since 6.7) QDateTime fromString(QStringView string, QStringView format, int baseYear, QCalendar cal)
(since 6.0) QDateTime fromString(const QString &string, QStringView format, int baseYear, QCalendar cal)
bool operator!=(const QDateTime &lhs, const QDateTime &rhs)
(since 6.4) QDateTime operator+(const QDateTime &dateTime, std::chrono::milliseconds duration)
(since 6.4) QDateTime operator+(std::chrono::milliseconds duration, const QDateTime &dateTime)
(since 6.4) std::chrono::milliseconds operator-(const QDateTime &lhs, const QDateTime &rhs)
(since 6.4) QDateTime operator-(const QDateTime &dateTime, std::chrono::milliseconds duration)
bool operator<(const QDateTime &lhs, const QDateTime &rhs)
QDataStream &operator<<(QDataStream &out, const QDateTime &dateTime)
bool operator<=(const QDateTime &lhs, const QDateTime &rhs)
bool operator==(const QDateTime &lhs, const QDateTime &rhs)
bool operator>(const QDateTime &lhs, const QDateTime &rhs)
bool operator>=(const QDateTime &lhs, const QDateTime &rhs)
QDataStream &operator>>(QDataStream &in, QDateTime &dateTime)

상세 설명

QDateTime 객체는 시간 표현 방식에 따라 달력 날짜와 시계 시간(“날짜 및 시간”)을 인코딩합니다. 이 객체는 QDate 및 QTime 클래스의 기능을 결합한 것입니다. 시스템 시계에서 현재 날짜와 시간을 읽을 수 있습니다. 또한 날짜와 시간을 비교하거나, 초, 일, 월, 년을 더하여 날짜와 시간을 조작하는 함수를 제공합니다.

QDateTime은 local time, UTC, 지정된 offset from UTC 또는 지정된 time zone 를 기준으로 날짜와 시간을 표현할 수 있습니다. 이러한 각 시간 표현 방식은 QTimeZone 클래스의 적절한 인스턴스에 캡슐화될 수 있습니다. 예를 들어, “Europe/Berlin” 시간대는 독일에서 사용되는 일광 절약 시간제 규칙을 적용합니다. 반면, UTC로부터 +3600초의 고정 오프셋은 UTC보다 1시간 앞선 시간대(일반적으로 ISO 표준 표기법으로 “UTC+01:00”으로 표기됨)이며, 일광 절약 시간제로 인한 복잡한 문제는 발생하지 않습니다. 현지 시간이나 지정된 시간대를 사용할 때, 시간대 전환( below 참조)이 고려됩니다. QDateTime의 ` timeSpec()` 메서드는 사용 중인 네 가지 시간 표현 유형 중 어느 것인지를 알려주며, ` timeRepresentation()` 메서드는 해당 시간 표현에 대한 전체 설명을 ` QTimeZone` 형식으로 제공합니다.

QDateTime 객체는 일반적으로 생성자에서 날짜와 시간을 명시적으로 지정하거나, currentDateTime() 또는 fromMSecsSinceEpoch()과 같은 정적 함수를 사용하여 생성됩니다. 날짜와 시간은 setDate() 및 setTime()을 사용하여 변경할 수 있습니다. 또한 setMSecsSinceEpoch() 함수를 사용하여 날짜와 시간을 설정할 수 있는데, 이 함수는 1970년 UTC 기준 시작 시점부터 경과한 시간을 밀리초 단위로 인수로 받습니다. fromString() 함수는 문자열과 해당 문자열 내의 날짜를 해석하는 데 사용되는 날짜 형식을 인수로 받아 QDateTime 객체를 반환합니다.

QDateTime::currentDateTime()는 현지 시간(기본값)과 같은 특정 시간 표현을 기준으로 현재 날짜와 시간을 나타내는 QDateTime을 반환합니다. QDateTime::currentDateTimeUtc()는 UTC를 기준으로 현재 날짜와 시간을 나타내는 QDateTime을 반환하며, 이는 QDateTime::currentDateTime(QTimeZone::UTC) 와 동일합니다.

date() 및 time() 함수는 날짜 및 시간 객체의 날짜와 시간 부분에 대한 액세스를 제공합니다. toString() 함수는 동일한 정보를 텍스트 형식으로 제공합니다.

QDateTime는 두 개의 QDateTime 객체를 비교하기 위한 완전한 연산자 세트를 제공하며, 여기서 값이 작을수록 더 이른 시점을, 클수록 더 늦은 시점을 의미합니다.

addMSecs()을 사용하여 지정된 밀리초 수만큼, addSecs()을 사용하여 지정된 초 수만큼, addDays()을 사용하여 지정된 일 수만큼 날짜/시간을 증가(또는 감소)시킬 수 있습니다. 마찬가지로, addMonths() 및 addYears()을 사용할 수 있습니다. daysTo() 함수는 두 날짜/시간 사이의 일 수를 반환하고, secsTo()는 두 날짜/시간 사이의 초 수를 반환하며, msecsTo()는 두 날짜/시간 사이의 밀리초 수를 반환합니다. 이러한 연산은 해당되는 경우 일광 절약 시간(DST) 및 기타 시간대 전환을 고려합니다.

toTimeZone()을 사용하여 날짜/시간을 다른 시간 표현 방식으로 재표현할 수 있습니다. 현지 시간, UTC 또는 UTC로부터의 고정 오프셋을 나타내는 경량 QTimeZone 를 전달하면, 해당 시간 표현 방식을 사용하도록 날짜/시간을 변환할 수 있습니다. 또는 전체 시간대( timeSpec()의 결과가 Qt::TimeZone 인)를 전달하여 이를 대신 사용할 수도 있습니다.

비고

QDateTime은 윤초를 고려하지 않습니다.

문자열 형식과의 모든 변환은 C 로케일을 사용하여 수행됩니다. 지역화된 변환에 대해서는 QLocale 를 참조하십시오.

그레고리력에는 0년이 없습니다. 해당 연도의 날짜는 유효하지 않은 것으로 간주됩니다. -1년은 “기원전 1년” 또는 “공원전 1년”을 의미합니다. 공원전 1년 1월 1일 전날은 기원전 31년 12월 31일입니다.

현지 시간(기본값) 또는 지정된 시간대를 사용하는 경우, transitions 와 관련된 문제를 해결해야 합니다. 그 결과, 이러한 QDateTime 인스턴스에 대한 연산(특히 인스턴스 생성 포함)은 UTC 또는 UTC로부터의 고정 오프셋을 사용할 때보다 더 많은 비용이 발생할 수 있습니다.

유효한 날짜 범위

QDateTime이 표현할 수 있는 값의 범위는 내부 저장 구현 방식에 따라 달라집니다. 현재 QDateTime은 날짜와 시간을 인코딩한 연속적인 밀리초(msecs) 값으로 qint64에 저장됩니다. 이로 인해 날짜 범위는 약 ±2억 9,200만 년으로 제한되며, 이는 QDate 의 ±20억 년 범위와 비교됩니다. 극단적인 값으로 QDateTime을 생성할 때는 저장 공간이 오버플로우되지 않도록 주의해야 합니다. 지원되는 정확한 값의 범위는 사용되는 시간 표현 방식에 따라 다릅니다.

시간대 사용

QDateTime은 시스템의 시간대 정보를 사용하여 현재 현지 시간대와 UTC와의 시차를 결정합니다. 시스템이 올바르게 구성되지 않았거나 최신 상태가 아닌 경우, QDateTime은 잘못된 결과를 반환합니다.

마찬가지로 QDateTime은 시스템에서 제공하는 정보를 사용하여 다른 시간대의 UTC에 대한 오프셋을 결정합니다. 이 정보가 불완전하거나 최신 상태가 아닌 경우, QDateTime은 잘못된 결과를 반환합니다. 자세한 내용은 QTimeZone 문서를 참조하십시오.

최신 유닉스 시스템에서는, 가능한 한 QDateTime이 과거의 시간대 전환(일광 절약 시간제(DST) 포함, 아래 참조)에 대한 정확한 정보를 가지고 있음을 의미합니다. 시스템이 과거 시간대 데이터를 지원하지 않는 Windows의 경우, 시간대 전환(특히 일광 절약 시간제(DST) 포함)과 관련하여 과거에 대한 정확성이 보장되지 않습니다. 그러나 ICU 라이브러리를 사용하여 Qt를 빌드하면 QTimeZone 에 Unix에서 사용되는 것과 동일한 시간대 데이터베이스가 적용됩니다.

시간대 전환

QDateTime은 표준시와 일광 절약 시간(DST) 간의 전환은 물론, 시간대가 표준 오프셋을 변경할 때 발생하는 전환까지 모두 고려합니다. 예를 들어, 전환이 오전 2시에 이루어지고 시계가 오전 3시로 앞당겨진다면, 02:00:00부터 02:59:59.999까지 1시간이 “누락”됩니다. 이러한 전환을 “spring forward”라고 하며, 건너뛴 시간대는 아무런 의미가 없습니다. 전환이 반대 방향, 즉 “fall back”으로 진행될 경우, 시간 간격이 먼저 이전 시간대(보통 일광 절약 시간)에서, 그다음 새로운 시간대(보통 표준시)에서 반복되므로 이 간격 내의 시간은 모호합니다.

일부 지역에서는 “역방향” 일광절약시간제를 적용하여, 여름에는 표준시를 사용하고 겨울에는 일광절약시간제(시간 차이가 줄어든 형태)를 사용합니다. 이러한 시간대의 경우, 봄철 시계 앞당기기는 여전히 봄에 이루어지며 1시간을 건너뛰지만, 이는 일광 절약 시간제에서 벗어나는 전환인 반면, 가을철 시계 뒤로 돌리기는 여전히 가을에 1시간을 되돌리지만 일광 절약 시간제로 들어가는 전환입니다.

UTC 시간(또는 UTC로부터 고정된 오프셋을 가진 시간)에서 변환할 때는 어떤 시간대에서도 항상 모호하지 않은 유효한 결과가 나옵니다. 그러나 날짜와 시간을 결합하여 현지 시간이나 특정 시간대를 기준으로 표현된 날짜/시간을 만들 때, 명목상의 결과가 전환 기간에 해당할 수 있어 무효하거나 모호해질 수 있습니다. 이러한 상황이 발생할 수 있는 메서드들은 ` resolve ` 매개변수를 받습니다. 요청된 `datetime`이 유효하고 모호하지 않은 경우, 이 매개변수는 항상 무시됩니다. 이 매개변수를 통해 제어할 수 있는 옵션에 대해서는 TransitionResolution 을 참조하십시오. Qt 6.7 이전에는 ` LegacyBehavior `에 상응하는 값이 선택되었습니다.

일광 절약 시간제(spring forward)로 인해 건너뛴 기간의 경우, 요청된 시간을 두 오프셋 중 하나로 해석하면 다른 오프셋이 사용되던 실제 시간이 산출됩니다. 따라서 resolve 에 TransitionResolution::RelativeToBefore 를 전달하면, 실제로는 전환 이후의 시간이 산출되는데, 이는 전환이 발생하지 않았더라면 요청된 표현을 가졌을 시간입니다. 마찬가지로, resolve 에 대해 TransitionResolution::RelativeToAfter 를 적용하면 전환 이전의 시간이 산출되는데, 이는 전환이 더 일찍 발생했더라면 요청된 표현을 가졌을 시간입니다.

QDateTime이 addDay()나 addSecs()와 같은 산술 연산을 수행할 때는 유효한 결과를 산출하도록 주의합니다. 예를 들어, 02:00에서 03:00으로 시계를 앞당기는 날에 01:59:59에 1초를 더하면 03:00:00이 됩니다. 전날 02:30에 하루를 더하면 전환 당일 03:30이 되고, addDay(-1) 를 호출하여 다음 날 02:30에서 하루를 빼면 전환 당일 01:30이 됩니다. addSecs()는 지정된 초 수만큼 시간 오프셋을 적용하는 반면, addDays()는 날짜를 조정하며, 그렇지 않을 경우 유효하지 않은 결과가 나올 때만 시간을 조정합니다. addDays(1) 를 일광 절약 시간제 시작 전날 03:00에 적용하면, 후자가 전자보다 23시간 뒤에 해당함에도 불구하고 전환 당일의 03:00이 반환됩니다. 반면, addSecs(24 * 60 * 60) 를 적용하면 24시간 뒤인 전환 당일의 04:00이 반환됩니다. 일반적인 시간 변경으로 인해 일부 날의 길이는 23시간 또는 25시간이 됩니다.

시스템의 ` time_t `가 표현할 수 있는 날짜 및 시간(32비트 ` time_t`를 사용하는 시스템의 경우 1901-12-14부터 2038-01-18까지; 유형이 64비트인 경우 `QDateTime`이 표현할 수 있는 전체 범위)에 대해서는, 표준 시스템 API를 사용하여 UTC로부터의 현지 시간 오프셋을 결정합니다. 이러한 시스템 API로 처리되지 않는 날짜 및 시간( time_t 범위 내의 일부를 포함할 수 있음)의 경우, 사용 가능한 경우 QTimeZone::systemTimeZone() 함수를 사용하거나, 가능한 한 정확하게 추정하기 위해 최선을 다합니다. 어떠한 경우든 사용되는 오프셋 정보는 시스템에 따라 다르며, 불완전하거나 과거 시간의 경우 역사적으로 부정확할 수 있습니다. 또한, 미래 날짜의 경우 해당 날짜가 도래하기 전에 현지 시간대의 오프셋 및 일광 절약 시간제(DST) 규칙이 변경될 수 있습니다.

하루 전체의 전환

극소수의 시간대에서는 국제 날짜 변경선이 해당 시간대를 가로지르는 과정에서 하루 전체를 건너뛰거나 반복한 경우가 있습니다. 이러한 경우, daysTo()는 중복이나 공백을 인식하지 못하고 단순히 달력 날짜의 차이를 사용합니다. 반면, msecsTo() 및 secsTo()는 실제 시간 간격을 정확히 파악합니다. 마찬가지로, addMSecs() 및 addSecs()은 경과 시간과 직접적으로 대응하는 반면, addDays(), addMonths() 및 addYears()은 공백이나 중복으로 인해 모호성이나 무효성이 발생하여 해결이 필요한 경우를 제외하고는 명목상의 달력을 따릅니다.

참고: 율리우스력에서 그레고리력으로의 변경과 같이 달력 변경 과정에서 “잃어버린”날짜는 QDateTime에 영향을 미치지 않습니다. 두 달력이 날짜를 다르게 기술하더라도, 변경 전후의 연속된 날짜는 연속적인 QDate 인스턴스로 표현되며, 각 인스턴스는 이전 인스턴스보다 하루 뒤의 날짜를 나타냅니다. 이는 두 달력 모두에서 또는 toJulianDay() 값을 통해 설명됩니다. 반면, 하루를 건너뛰거나 중복하는 시간대는 날짜가 아닌 시간에 대한 설명을 변경하는 것이며, 비록 24시간 단위로 변경되더라도 마찬가지입니다.

UTC와의 시차

UTC에 대한 오프셋은 그리니치 동쪽을 기준으로 초 단위로 측정됩니다. 특정 날짜와 시간(예: 특정 날의 정오)이 나타내는 순간은 사용된 시간 표현 방식에 따라 달라집니다. UTC에 대한 오프셋이 더 큰 경우, 주어진 날짜와 시간의 조합에 상관없이 더 이른 순간을 나타내며, 오프셋이 더 작은 경우 더 늦은 순간을 나타냅니다.

UTC에 대한 오프셋에는 명시적인 크기 제한이 없지만, ±hh:mm 형식을 사용하는 toString() 및 fromString() 메서드를 사용할 때는 암묵적인 제한이 적용되어, 사실상 범위가 ±99시간 59분으로 제한되며 분 단위는 정수분만 허용됩니다. 현재 ±14시간 범위를 벗어난 오프셋을 가진 시간대는 없으며, 알려진 모든 오프셋은 5분의 배수임을 유의하십시오. 과거의 시간대는 범위가 더 넓었고 초 단위의 오프셋을 포함할 수도 있었으나, 이러한 오프셋은 문자열로 정확하게 표현할 수 없습니다.

QDate, QTime, QDateTimeEdit 및 QTimeZone도 참조하십시오 .

멤버 유형 문서

[since 6.7] enum class QDateTime::TransitionResolution

이 열거형은 Timezone transitions 에 해당하는 날짜 및 시간 조합을 처리하는 데 사용됩니다.

현지 시간이나 일광 절약 시간이 적용되는 시간대를 기준으로 지정된 날짜/시간을 생성하거나, setDate(), setTime() 또는 setTimeZone()를 사용하여 이를 수정할 때, 주어진 매개변수는 해당 시간대에서 의미가 없거나 두 가지 의미를 가질 수 있는 시간 표현을 암시할 수 있습니다. 이러한 시간 표현은 '전환 상태'에 있다고 설명됩니다. 두 경우 모두, 연산이 정의되지 않았음을 나타내기 위해 단순히 유효하지 않은 날짜/시간을 반환할 수 있습니다. 모호한 경우에는, 의도된 것으로 해석될 수 있는 두 시간 중 하나를 선택할 수도 있습니다. 의미가 없는 경우에는, 의도되었을 가능성이 있는 그 시간의 양쪽 중 하나를 선택할 수 있습니다. 예를 들어, 이전 시간에서 앞으로 이동할 때, 해당 이전 시간으로부터 실제로 지정된 시간만큼 지난, 전환점 이후의 시간을 선택할 수 있습니다. 여기에 지정된 옵션들은 이러한 선택이 어떻게 수행될지를 구성합니다.

상수값설명
QDateTime::TransitionResolution::Reject0전환 내의 모든 시간을 유효하지 않은 것으로 취급합니다. 실제로 유효하지 않거나, 모호한 경우입니다.
QDateTime::TransitionResolution::RelativeToBefore1전환 전의 시간에서 앞으로 나아가는 것처럼 시간을 선택합니다. 이는 전환 전에 유효했던 오프셋을 사용하여 요청된 시간을 해석하고, 필요한 경우 결과를 결과 시간에 유효한 오프셋으로 변환합니다.
QDateTime::TransitionResolution::RelativeToAfter2전환 후의 시간에서 뒤로 거슬러 올라가는 것처럼 시간을 선택합니다. 이 경우 요청된 시간을 전환 후 유효한 오프셋을 사용하여 해석하고, 필요한 경우 결과를 결과 시점에 유효한 오프셋으로 변환합니다.
QDateTime::TransitionResolution::PreferBefore3전환 전의 시간을 선택합니다.
QDateTime::TransitionResolution::PreferAfter4전환 이후의 시간을 선택합니다.
QDateTime::TransitionResolution::PreferStandard5전환 시점의 표준시 쪽에 해당하는 시간을 선택합니다.
QDateTime::TransitionResolution::PreferDaylightSaving6전환 시점의 일광 절약 시간 측에 있는 시간을 선택합니다.

일부 생성자 및 세터 함수에서 TransitionResolution 매개변수의 기본값으로 추가 상수인 LegacyBehavior 가 사용됩니다. 이는 RelativeToBefore 의 별칭으로, Qt 6.7 이전 버전의 QDateTime 동작과 가장 유사한 동작을 구현합니다.

addDays(), addMonths() 또는 addYears()의 경우, 양의 조정을 추가할 때는 RelativeToBefore 을, 음의 조정을 추가할 때는 RelativeToAfter 을 사용하는 것이 현재 및 (대부분의 경우) 과거의 동작이었습니다.

참고: 여름철에 일광 절약 시간제(DST)로 인해 UTC와의 오프셋이 증가하는 시간대(‘양수 DST’라고 함)에서는 , PreferStandard는 RelativeToAfter의 별칭이며, PreferDaylightSaving는 RelativeToBefore의 별칭입니다. 일광 절약 시간제(DST)로 인해 겨울철에 UTC와의 오프셋이 감소하는(‘음의 DST’라고 함) 시간대에서는, 운영 체제가(대부분의 플랫폼에서와 같이) 특정 날짜와 시간이 DST인지 표준 시간인지 여부를 보고하는 경우, 그 반대의 규칙이 적용됩니다. 일부 플랫폼의 경우, Qt::TimeZone 날짜/시간에 대해서도 전환 세부 정보를 확인할 수 없으므로, QTimeZone 는 UTC와의 오프셋이 더 작은 쪽을 표준시로 간주해야 하며, 이는 사실상 양의 DST를 가정하는 것과 같습니다.

다음 표는 현지 시간이 02:00과 03:00 사이에 전환이 있고, 양쪽의 명목상 표준 시간(LST)과 일광 절약 시간(LDT)이 있는 날에 02:30에 대한 요청을 QDateTime 생성자가 다양한 가능한 경우에서 어떻게 해결하는지를 보여줍니다. 전환 유형은 1시간을 건너뛰거나 반복할 수 있습니다. 전환 유형과 매개변수 resolve 의 값에 따라 지정된 날짜의 실제 시간이 결정됩니다. 먼저, 양의 일광 절약 시간이 적용되는 일반적인 경우를 살펴보겠습니다. 이 경우:

이전02:00–03:00이후resolve선택된
LST건너뛰기LDT이전 기준03:30 LDT
LST건너뛰기LDT이후 기준01:30 LST
LST건너뛰기LDT이전 시간 우선01:30 LST
LST건너뛰기LDT선호 시간 (이후)03:30 LDT
LST건너뛰기LDT표준 시간 선호01:30 LST
LST건너뛰기LDT일광 절약 시간 우선03:30 LDT
LDT반복LST이전 시간 대비02:30 LDT
LDT반복LST이후 기준02:30 LST
LDT반복LST이전에 선호02:30 LDT
LDT반복LST선호 시간 (이후)02:30 LST
LDT반복LST표준 시간 선호02:30 LST
LDT반복LST일광 절약 시간 선호02:30 LDT

둘째, 겨울에는 LDT를 사용하고 여름에는 1시간을 건너뛰어 LST로 전환한 다음, 다시 겨울로 돌아올 때 1시간을 되돌리는 방식의 ‘역일광절약제’ 사례:

LDT건너뛰기LST이전 대비03:30 LST
LDT건너뛰기LST이후 기준01:30 LDT
LDT건너뛰기LST이전 시간 우선01:30 LDT
LDT건너뛰기LST선호 시간 (이후)03:30 LST
LDT건너뛰기LST표준 시간 선호03:30 LST
LDT건너뛰기LST일광 절약 시간 선호01:30 LDT
LST반복LDT이전 시간 대비02:30 LST
LST반복LDT이후 기준02:30 LDT
LST반복LDT이전에 선호02:30 LST
LST반복LDT선호 시간 (이후)02:30 LDT
LST반복LDT표준 시간 선호02:30 LST
LST반복LDT일광 절약 시간 선호02:30 LDT

Reject를 사용하면 관련 QDateTime API가 유효하지 않은 datetime 객체를 반환하도록 유도할 수 있으므로, 코드가 전환을 자체적으로 처리할 수 있습니다. 예를 들어, 사용자가 선택한 날짜 및 시간이 전환 기간에 속한다는 사실을 알리고, 충돌이나 모호성을 해결할 기회를 제공할 수 있습니다. 이를 사용하는 코드는 자체(또는 사용자의) 해결에 사용할 관련 정보를 결정하는 데 위의 다른 옵션들이 유용할 수 있습니다. 전환의 시작이나 끝, 또는 전환이 발생하는 순간 자체가 올바른 해결책인 경우, QTimeZone 의 전환 API를 사용하여 해당 정보를 얻을 수 있습니다. secsTo()를 사용하여 전날 정오와 다음 날 정오 사이의 실제 시간을 측정함으로써, 해당 전환이 반복 구간인지 건너뛰기 구간인지 판단할 수 있습니다. 결과는 건너뛰기 구간(예: 일광 절약 시간제 시작)의 경우 48시간 미만이고, 반복 구간(예: 일광 절약 시간제 종료)의 경우 48시간 이상입니다.

참고: Reject 이외의 해결 방식이 지정된경우 , 가능한 한 유효한 QDateTime 객체가 반환됩니다. 요청된 날짜-시간이 간격에 해당하는 경우, 반환된 날짜-시간에는 요청된 time() 값이 포함되지 않으며, 하루 전체가 건너뛴 경우에는 date() 값도 포함되지 않을 수 있습니다. 따라서 date() 및 time()의 결과를 요청된 값과 비교하여 간격이 발생한 시점을 파악할 수 있습니다.

다른 날짜/시간 소프트웨어와의 관계

Python 프로그래밍 언어의 datetime API에는 RelativeToBefore (fold = True) 및 RelativeToAfter (fold = False)에 해당하는 fold 매개변수가 있습니다.

JavaScript의 Date 를 대체하기 위한 Temporal 제안은 disambiguation 매개변수의 값으로서, 전환을 해결하는 방법에 대해 네 가지 옵션을 제공합니다. 이 중 'reject' 옵션은 예외를 발생시키며, 이는 대략 Reject 가 유효하지 않은 결과를 산출하는 것과 일치합니다. 'earlier' 및 'later' 옵션은 PreferBefore 와 PreferAfter 에 해당합니다. 'compatible' 옵션은 RelativeToBefore (그리고 Python의 fold = True)에 해당합니다.

이 열거형은 Qt 6.7에서 도입되었습니다.

Timezone transitions도 참조하십시오 .

enum class QDateTime::YearRange

이 열거형은 QDateTime 로 표현할 수 있는 연도 범위(그레고리력 기준)를 나타냅니다:

상수값설명
QDateTime::YearRange::First-292275056이 해의 후반부는 표현 가능합니다
QDateTime::YearRange::Last+292278994이 해의 초반 부분은 표현 가능합니다

표현 가능한 정확한 첫 번째 및 마지막 날짜/시간은 이 연도 범위 내에 포함되며, 사용된 ` timeRepresentation()`에 따라 달라집니다. 이는 ` fromMSecsSinceEpoch()`에 적절한 값을 전달하여 확인할 수 있습니다.

이 두 해 사이에 정확히 속하는 모든 날짜도 표현 가능합니다. 단, 그레고리력에는 0년이 없다는 점에 유의하십시오.

참고: QDate 는 더 넓은 연도 범위의 날짜를 표현할 수 있습니다. QDateTime 가 지원하는 연도 범위가 1970년을 기준으로 양쪽 방향으로 2억 9,200만 년에 달하므로, 대부분의 용도에서는 이 차이가 거의 없습니다.

isValid() 및 QDate도 참조하십시오 .

멤버 함수 문서

QDateTime::QDateTime(QDate date, QTime time, const QTimeZone &timeZone, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)

timeZone 에 설명된 시간 표기법을 사용하여, 주어진 date 및 time 를 바탕으로 datetime 객체를 생성합니다.

date 가 유효하고 time 가 유효하지 않은 경우, 시간은 자정으로 설정됩니다. timeZone 가 유효하지 않은 경우, datetime은 유효하지 않게 됩니다. date 및 time 가 timeZone 의 전환 시점에 가까운 순간을 나타내는 경우, resolve 는 해당 상황이 어떻게 해결될지를 제어합니다.

참고: Qt 6.7이전 버전의 이 함수에는 resolve 매개변수가 없었기 때문에, 전환과 관련된 모호성을 해결할 방법이 없었습니다.

[noexcept] QDateTime::QDateTime()

명목상 현지 시간을 사용하여 null 날짜/시간을 생성합니다.

null 날짜/시간은 날짜와 시간이 유효하지 않으므로 유효하지 않습니다.

isValid(), setMSecsSinceEpoch(), setDate(), setTime(), setTimeZone()도 참조하십시오 .

[since 6.5] QDateTime::QDateTime(QDate date, QTime time, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)

지정된 date 및 time 값을 사용하여 현지 시간을 기준으로 날짜/시간 객체를 생성합니다.

date 이 유효하고 time 이 유효하지 않은 경우, 자정이 시간으로 사용됩니다. date 과 time 이 현지 시간의 전환 시점과 가까운 순간을 나타내는 경우, resolve 는 해당 상황을 어떻게 해결할지 제어합니다.

참고: Qt 6.7이전 버전의 이 함수에는 resolve 매개변수가 없었기 때문에, 전환과 관련된 모호성을 해결할 방법이 없었습니다.

이 함수는 오버로드된 함수입니다.

이 함수는 Qt 6.5에서 도입되었습니다.

[noexcept] QDateTime::QDateTime(const QDateTime &other)

other 의 날짜/시간 값의 복사본을 생성합니다.

[noexcept] QDateTime::QDateTime(QDateTime &&other)

임시 객체 other 의 datetime 내용을 이 객체로 옮기고, other 을 정의되지 않은(그러나 올바른) 상태로 남겨둡니다.

[noexcept] QDateTime::~QDateTime()

datetime를 삭제합니다.

QDateTime QDateTime::addDays(qint64 ndays) const

이 객체의 날짜/시간보다 ndays 일 후( ndays 가 음수인 경우 그 이전)의 날짜/시간을 포함하는 QDateTime 객체를 반환합니다.

timeSpec()의 값이 Qt::LocalTime 이거나 Qt::TimeZone 이고, 결과 날짜 및 시간이 표준시에서 일광 절약 시간으로 전환되는 시간에 해당할 경우, 결과는 변경 방향으로 이 간격을 약간 넘은 시점이 됩니다. 전환 시각이 오전 2시이고 시계가 오전 3시로 앞당겨지는 경우, 오전 2시와 오전 3시 사이를 목표로 한 결과는 오전 2시 이전( ndays < 0 인 경우) 또는 오전 3시 이후(그 외의 경우)로 조정됩니다.

daysTo(), addMonths(), addYears(), addSecs(), Timezone transitions도 참조하십시오 .

[since 6.4] QDateTime QDateTime::addDuration(std::chrono::milliseconds msecs) const

이 객체의 날짜/시간보다 msecs 밀리초 늦은 ( msecs 가 음수인 경우 더 이른) 날짜/시간을 포함하는 QDateTime 객체를 반환합니다.

이 datetime이 유효하지 않은 경우, 유효하지 않은 datetime이 반환됩니다.

참고: ` std::chrono::months ` 또는 ` std::chrono::years `로 표현된 기간을더해도 ` addMonths()` 또는 ` addYears()`을 사용하여 얻은 결과와 동일한 결과가 나오지는 않습니다. 전자는 태양년을 기준으로 계산된 고정 기간인 반면, 후자는 그레고리력의 월/년 정의를 사용합니다.

이 함수는 Qt 6.4에서 도입되었습니다.

addMSecs(), msecsTo(), addDays(), addMonths() 및 addYears()도 참조하십시오 .

QDateTime QDateTime::addMSecs(qint64 msecs) const

이 객체의 날짜/시간보다 msecs 밀리초 늦은( msecs 가 음수인 경우 더 이른) 날짜/시간을 포함하는 QDateTime 객체를 반환합니다.

이 날짜/시간이 유효하지 않은 경우, 유효하지 않은 날짜/시간이 반환됩니다.

addSecs(), msecsTo(), addDays(), addMonths() 및 addYears()도 참조하십시오 .

QDateTime QDateTime::addMonths(int nmonths) const

이 객체의 날짜/시간보다 nmonths 개월 뒤의 날짜/시간( nmonths 가 음수인 경우 더 이른 시점)을 포함하는 QDateTime 객체를 반환합니다.

timeSpec()이 Qt::LocalTime 또는 Qt::TimeZone 이고, 결과 날짜 및 시간이 표준시에서 일광절약시간으로 전환되는 시간에 해당할 경우, 결과는 변경 방향으로 이 간격을 약간 넘어선 시점이 됩니다. 전환 시각이 오전 2시이고 시계가 오전 3시로 앞당겨진다면, 오전 2시와 오전 3시 사이를 목표로 한 결과는 오전 2시 이전( nmonths < 0 인 경우) 또는 오전 3시 이후(그 외의 경우)로 조정됩니다.

daysTo(), addDays(), addYears(), addSecs(), Timezone transitions도 참조하십시오 .

QDateTime QDateTime::addSecs(qint64 s) const

이 객체의 날짜/시간보다 s 초 후( s 가 음수인 경우 그 이전)의 날짜/시간을 포함하는 ` QDateTime ` 객체를 반환합니다.

이 datetime이 유효하지 않은 경우, 유효하지 않은 datetime이 반환됩니다.

addMSecs(), secsTo(), addDays(), addMonths() 및 addYears()도 참조하십시오 .

QDateTime QDateTime::addYears(int nyears) const

이 객체의 날짜/시간보다 nyears 년 후의 날짜/시간을 포함하는 QDateTime 객체를 반환합니다( nyears 가 음수인 경우 그 이전의 날짜/시간을 반환합니다).

timeSpec()이 Qt::LocalTime 또는 Qt::TimeZone 이고, 결과 날짜 및 시간이 표준시에서 일광 절약 시간으로 전환되는 시간에 해당할 경우, 결과는 변경 방향으로 이 간격을 약간 넘은 시점이 됩니다. 전환 시각이 오전 2시이고 시계가 오전 3시로 앞당겨진다면, 오전 2시와 오전 3시 사이를 목표로 한 결과는 ( nyears < 0 인 경우) 오전 2시 이전으로, 그렇지 않은 경우 오전 3시 이후로 조정됩니다.

daysTo(), addDays(), addMonths(), addSecs(), Timezone transitions도 참조하십시오 .

[static, since 6.5] QDateTime QDateTime::currentDateTime(const QTimeZone &zone)

zone 에 설명된 시간 표기법을 사용하여 시스템 시계의 현재 날짜 및 시간을 반환합니다. zone 를 생략하면 현지 시간이 사용됩니다.

이 함수는 Qt 6.5에서 도입되었습니다.

currentDateTimeUtc(), QDate::currentDate(), QTime::currentTime(), toTimeZone()도 참조하십시오 .

[static] QDateTime QDateTime::currentDateTime()

이 함수는 ` QDateTime::currentDateTime()`을 오버로드합니다.

[static] QDateTime QDateTime::currentDateTimeUtc()

시스템 시계의 현재 날짜와 시간을 UTC 형식으로 반환합니다.

currentDateTime(QTimeZone::UTC) 와 동일합니다.

currentDateTime(), QDate::currentDate(), QTime::currentTime(), toTimeZone()도 참조하십시오 .

[static noexcept] qint64 QDateTime::currentMSecsSinceEpoch()

1970년 UTC 기준 시작 시점부터 현재까지의 경과 시간을 밀리초 단위로 반환합니다.

이 숫자는 POSIX의 time_t 변수와 유사하지만, 초 대신 밀리초 단위로 표현됩니다.

currentDateTime(), currentDateTimeUtc(), toTimeZone()도 참조하십시오 .

[static noexcept] qint64 QDateTime::currentSecsSinceEpoch()

1970년 UTC 기준 시작 시점부터 경과한 초 수를 반환합니다.

이 숫자는 POSIX의 time_t 변수와 유사합니다.

currentMSecsSinceEpoch()도 참조하십시오 .

QDate QDateTime::date() const

datetime 객체의 날짜 부분을 반환합니다.

setDate(), time() 및 timeRepresentation()도 참조하십시오 .

qint64 QDateTime::daysTo(const QDateTime &other) const

현재 날짜 및 시간으로부터 ‘ other ’ 날짜 및 시간까지의 일수를 반환합니다.

일수는 이 날짜/시간과 other 날짜/시간 사이에 자정이 몇 번 도래했는지에 따라 계산됩니다. 즉, 23:55부터 다음 날 0:05까지의 10분 차이는 1일로 간주됩니다.

other 날짜/시간이 이 날짜/시간보다 이른 경우, 반환되는 값은 음수입니다. 두 날짜/시간 중 하나라도 유효하지 않은 경우, 반환되는 값은 0입니다.

예시:

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)

CFDate date 의 복사본을 포함하는 새로운 QDateTime 객체를 생성합니다.

toCFDate()도 참조하십시오 .

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

timeZone 에 명시된 대로, 1970년 시작 시점(UTC 기준)으로부터 주어진 밀리초 수 msecs 가 지난 시점을 나타내는 날짜/시간을 반환합니다. 기본 시간 표기 방식은 현지 시간입니다.

msecs 에 대한 값 중에는 QDateTime 의 유효한 범위(양수 및 음수 모두)를 벗어난 값이 있을 수 있습니다. 이러한 값에 대해서는 이 함수의 동작이 정의되지 않습니다.

fromSecsSinceEpoch(), toMSecsSinceEpoch(), setMSecsSinceEpoch()도 참조하십시오 .

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

이 함수는 ` QDateTime::fromMSecsSinceEpoch()`을 오버로드합니다.

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

date 의 복사본을 포함하는 새로운 QDateTime 객체를 생성합니다.

toNSDate()도 참조하십시오 .

[static] QDateTime QDateTime::fromSecsSinceEpoch(qint64 secs, const QTimeZone &timeZone)

timeZone 에 명시된 대로, 1970년 시작 시점(UTC 기준)으로부터 주어진 초 수 secs 만큼 지난 시점을 나타내는 날짜/시간을 반환합니다. 기본 시간 표기 방식은 현지 시간입니다.

secs 에 대한 값 중에는 QDateTime 의 유효한 범위(양수 및 음수 모두)를 벗어난 값이 있을 수 있습니다. 이러한 값에 대해서는 이 함수의 동작이 정의되지 않습니다.

fromMSecsSinceEpoch(), toSecsSinceEpoch(), setSecsSinceEpoch()도 참조하십시오 .

[static] QDateTime QDateTime::fromSecsSinceEpoch(qint64 secs)

이 함수는 ` QDateTime::fromSecsSinceEpoch()`을 오버로드합니다.

[static, since 6.4] QDateTime QDateTime::fromStdLocalTime(const std::chrono::local_time<std::chrono::milliseconds> &time)

1970-01-01T00:00:00.000 (현지 시간 기준,Qt::LocalTime)부터 계산된, time 로 표현되는 밀리초 수를 날짜와 시간으로 갖는 datetime 객체를 생성합니다.

참고: 이 함수를 사용하려면 C++20이 필요합니다.

이 함수는 Qt 6.4에서 도입되었습니다.

toStdSysMilliseconds() 및 fromMSecsSinceEpoch()도 참조하십시오 .

[static, since 6.4] template <typename Clock, typename Duration> QDateTime QDateTime::fromStdTimePoint(const std::chrono::time_point<Clock, Duration> &time) requires requires(const std::chrono::time_point<Clock, Duration> &t) { // the clock can be converted to system_clock std::chrono::clock_cast<std::chrono::system_clock>(t); // after the conversion to system_clock, the duration type // we get is convertible to milliseconds requires std::is_convertible_v< system_clock_cast_duration<Clock, Duration>, std::chrono::milliseconds >; }

Qt::UTC 를 시간 표현 방식으로 사용하여, time 와 동일한 시점을 나타내는 datetime 객체를 생성합니다.

time 의 시계는 std::chrono::system_clock 와 호환되어야 하며, 특히 std::chrono::clock_cast 에서 지원하는 변환이 존재해야 합니다. 변환 후, 결과의 기간(duration) 유형은 std::chrono::milliseconds 로 변환 가능해야 합니다.

그렇지 않은 경우, 호출자는 이 함수의 입력값이 위의 제약 조건을 충족하도록 std::chrono::system_clock 로 필요한 시계 변환과 지속 시간 유형에 대한 필요한 변환(형변환/반올림/하한값/상한값 등)을 수행해야 합니다.

참고: 이 함수를 사용하려면 C++20이 필요합니다.

이 함수는 Qt 6.4에서 도입되었습니다.

toStdSysMilliseconds() 및 fromMSecsSinceEpoch()도 참조하십시오 .

[static, since 6.4] QDateTime QDateTime::fromStdTimePoint(const std::chrono::local_time<std::chrono::milliseconds> &time)

1970-01-01T00:00:00.000(현지 시간 기준,Qt::LocalTime)부터 계산된, time 로 표현되는 밀리초 수를 날짜와 시간으로 갖는 datetime 객체를 생성합니다.

참고: 이 함수를 사용하려면 C++20이 필요합니다.

이 함수는 Qt 6.4에서 도입되었습니다.

toStdSysMilliseconds() 및 fromMSecsSinceEpoch()도 참조하십시오 .

[static, since 6.4] QDateTime QDateTime::fromStdTimePoint(std::chrono::time_point<std::chrono::system_clock, std::chrono::milliseconds> time)

` time`과 동일한 시점을 나타내는 datetime 객체를 생성하며, 이때 ` Qt::UTC `을 시간 표현식으로 사용합니다.

이 함수는 QDateTime::fromStdTimePoint()을 오버로드합니다.

이 함수는 Qt 6.4에서 도입되었습니다.

[static, since 6.4] QDateTime QDateTime::fromStdZonedTime(const std::chrono::zoned_time<std::chrono::milliseconds, const std::chrono::time_zone *> &time)

time 와 동일한 시점을 나타내는 datetime 객체를 생성합니다. 결과는 time 의 시간대 기준으로 표시됩니다.

참고: 이 함수를 사용하려면 C++20이 필요합니다.

이 함수는 Qt 6.4에서 도입되었습니다.

QTimeZone, toStdSysMilliseconds() 및 fromMSecsSinceEpoch()도 참조하십시오 .

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

string 로 표현된 QDateTime 를, 주어진 format 를 사용하여 반환하거나, 해당 문자열을 구문 분석할 수 없는 경우 유효하지 않은 날짜 및 시간을 반환합니다.

달력( cal )이 제공된 경우 이를 사용하며, 그렇지 않으면 그레고리력을 사용합니다.

format 에 연도의 마지막 두 자리만 지정된 경우, baseYear 을 기점으로 한 100년 단위의 기간이 우선적으로 고려됩니다. 6.7 이전 버전에는 baseYear 매개변수가 없었으며, 항상 1900이 사용되었습니다. 이는 baseYear 의 기본값으로, 해당 연도부터 1999년까지의 연도 중 하나를 선택합니다. 경우에 따라, 제공된 모든 필드와 일관된 결과를 얻기 위해 다른 필드에 따라 다음 세기나 이전 세기가 선택될 수 있습니다. 자세한 내용은 QDate::fromString()를 참조하십시오.

QDate::fromString() 및 QTime::fromString()에서 날짜 및 시간의 각 부분을 나타내기 위해 형식 문자열에서 인식되는 표현식 외에도, 이 메서드는 다음을 지원합니다:

표현식출력
t시간대(오프셋, 이름, “Z” 또는 “UTC” 접두사가 붙은 오프셋)
tt시와 분 사이에 콜론이 없는 오프셋 형식의 시간대(예: "+0200")
ttt시와 분 사이에 콜론(:)이 포함된 오프셋 형식의 시간대 (예: "+02:00")
tttt시간대 이름. QTimeZone::displayName()이 QTimeZone::LongName 에 대해 반환하는 값이거나 해당 시간대의 IANA ID(예: "Europe/Berlin")입니다. 인식되는 이름은 QTimeZone 에 등록된 것으로, 사용 중인 운영 체제에 따라 다를 수 있습니다.

't' 형식 지정자가 없으면 시스템의 로컬 시간대가 사용됩니다. 다른 모든 필드의 기본값에 대해서는 QDate::fromString() 및 QTime::fromString()을 참조하십시오.

예를 들어:

QDateTime dateTime = QDateTime::fromString("1.30.1", "M.d.s");
// dateTime is January 30 in 1900 at 00:00:01.
dateTime = QDateTime::fromString("12", "yy");
// dateTime is January 1 in 1912 at 00:00:00.

작은 따옴표로 묶인 비어 있지 않은 문자열은 (따옴표를 제거한 후) 표현식으로 해석되지 않고 텍스트로 처리됩니다. 연속된 두 개의 작은따옴표("''")는 리터럴 시퀀스의 시작이나 끝이 아니라, 입력과 일치해야 할 하나의 작은따옴표로 인식됩니다. 그 외의 모든 입력 문자는 입력 문자열에서 일치해야 할 리터럴 텍스트로 처리됩니다. 예를 들어:

QTime time1 = QTime::fromString("131", "HHh");
// time1 is 13:00:00
QTime time2 = QTime::fromString("1apA", "1amAM");
// time2 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 `가 반환됩니다.

숫자 필드가 나란히 배치되어 있고, 숫자 시퀀스를 구분하는 구분자가 없는 경우, 한 자릿수로 허용되는 일부 필드가 두 자릿수를 사용하는지(표현할 값이 9를 초과하기 때문)에 대한 모호성이 발생할 수 있습니다. 이러한 필드에 두 자릿수를 할당할 경우 다른 필드에 할당할 자릿수가 너무 부족해지고, 한 자릿수 표기가 다른 필드들과 일관성이 있다면 이 모호성을 해결할 수 있습니다. 그렇지 않은 경우(하나 이상의 필드가 한 자리수만 허용되고, 각 필드에 한 자리수만 할당해도 여분의 자릿수가 남는 경우), 데이터의 일관성이 유지된다는 전제 하에, 앞쪽 필드에 여분의 자릿수를 할당하는 해결 방식이 뒤쪽 필드에 할당하는 방식보다 선호됩니다. 예를 들어:

선두 0이 없는 표현(d, M, h, m, s, z)은 탐욕적인 방식을 따릅니다. 즉, 범위를 벗어나거나 다른 섹션에 할당할 자릿수가 너무 부족해지더라도 두 자리(z의 경우 세 자리)를 사용합니다.

QDateTime dateTime = QDateTime::fromString("130", "Mm"); // January, 30 mins

이로 인해 1월 1일 00:30.00이 될 수도 있었겠지만, M은 두 자릿수를 차지하게 됩니다.

string 의 필드가 잘못 지정되면 유효하지 않은 QDateTime 가 반환됩니다. 현지 시간 기준으로 100년 초부터 9999년 말까지의 날짜 및 시간만 지원됩니다. 다른 시간대(특히 UTC 포함)에서 이 범위의 끝부분에 가까운 날짜 및 시간은 현지 시간대에 따라 범위 밖으로 벗어날 수 있으며(따라서 유효하지 않은 것으로 처리될 수 있음) 이 점에 유의하십시오.

참고: 요일 및 월 이름과 AM/PM 표시자는 반드시 영어(C 로케일)로 지정해야 합니다. 현지화된 월 및 요일 이름이나 현지화된 AM/PM 형식을 인식하려면 QLocale::system() toDateTime()을 사용하십시오.

참고: 형식 문자가 위 표에서 해당 문자를 사용하는 가장 긴 표현식보다 더 많이 반복될경우 , 형식의 해당 부분은 구분자 없이 여러 개의 표현식으로 해석됩니다. 즉, 위에서 가장 긴 표현식이 해당 문자가 반복된 횟수만큼 반복된 후, 더 짧은 표현식일 수 있는 나머지 부분이 뒤에 이어집니다. 따라서 'tttttt' 는 "Europe/BerlinEurope/Berlin" 와 일치하여 시간대를 베를린 시간으로 설정합니다. 만약 날짜/시간 문자열에 "Europe/BerlinZ"가 포함되어 있다면 "일치"는 하지만 일관성 없는 결과를 생성하여 유효하지 않은 날짜/시간을 초래하게 됩니다.

toString(), QDate::fromString(), QTime::fromString(), QLocale::toDateTime()도 참조하십시오 .

[static, since 6.0] QDateTime QDateTime::fromString(QStringView string, Qt::DateFormat format = Qt::TextDate)

이 함수는 ` QDateTime::fromString()`를 오버로드합니다.

이 함수는 Qt 6.0에서 도입되었습니다.

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

string 로 표현된 QDateTime 를, 지정된 format 를 사용하여 반환하며, 이것이 불가능할 경우 유효하지 않은 날짜/시간을 반환합니다.

Qt::TextDate 에 대한 참고 사항: 영어의 짧은 월 이름(예: 약식 "Jan" 또는 장식 "January")만 인식됩니다.

이 함수는 오버로드된 함수입니다.

toString() 및 QLocale::toDateTime()도 참조하십시오 .

[static, since 6.0] QDateTime QDateTime::fromString(QStringView string, QStringView format, QCalendar cal)

이 함수는 ` QDateTime::fromString()`을 오버로드합니다.

이 함수는 Qt 6.0에서 도입되었습니다.

[static, since 6.7] QDateTime QDateTime::fromString(QStringView string, QStringView format, int baseYear = QLocale::DefaultTwoDigitBaseYear)

기본 생성된 ` QCalendar`를 사용합니다.

이 함수는 ` QDateTime::fromString()`를 오버로드합니다.

이 함수는 Qt 6.7에서 도입되었습니다.

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

이 함수는 ` QDateTime::fromString()`를 오버로드합니다.

이 함수는 Qt 6.0에서 도입되었습니다.

[static, since 6.7] QDateTime QDateTime::fromString(const QString &string, QStringView format, int baseYear = QLocale::DefaultTwoDigitBaseYear)

기본 생성된 ` QCalendar`를 사용합니다.

이 함수는 ` QDateTime::fromString()`을 오버로드합니다.

이 함수는 Qt 6.7에서 도입되었습니다.

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

이 함수는 ` QDateTime::fromString()`를 오버로드합니다.

[static, since 6.7] QDateTime QDateTime::fromString(const QString &string, const QString &format, int baseYear = QLocale::DefaultTwoDigitBaseYear)

기본 생성된 ` QCalendar`를 사용합니다.

이 함수는 ` QDateTime::fromString()`를 오버로드합니다.

이 함수는 Qt 6.7에서 도입되었습니다.

[static, since 6.7] QDateTime QDateTime::fromString(QStringView string, QStringView format, int baseYear, QCalendar cal)

이 함수는 ` QDateTime::fromString()`를 오버로드합니다.

이 함수는 Qt 6.7에서 도입되었습니다.

[static, since 6.0] QDateTime QDateTime::fromString(const QString &string, QStringView format, int baseYear, QCalendar cal)

이 함수는 ` QDateTime::fromString()`을 오버로드합니다.

이 함수는 Qt 6.0에서 도입되었습니다.

bool QDateTime::isDaylightTime() const

이 날짜 및 시간이 일광 절약 시간제에 해당하는지 여부를 반환합니다.

Qt::TimeSpec 가 Qt::LocalTime 또는 Qt::TimeZone 가 아닌 경우 항상 false를 반환합니다.

timeSpec()함수도 참조하십시오 .

bool QDateTime::isNull() const

날짜와 시간이 모두 null인 경우 true 을 반환하고, 그렇지 않은 경우 false 을 반환합니다. null인 날짜/시간은 유효하지 않습니다.

QDate::isNull(), QTime::isNull(), isValid()도 참조하십시오 .

bool QDateTime::isValid() const

이 날짜/시간이 명확한 특정 시점을 나타내는 경우 ` true `를 반환하고, 그렇지 않은 경우 ` false`를 반환합니다.

datetime은 날짜와 시간이 모두 유효하고, 사용된 시간 표현 방식이 이 둘의 조합에 유효한 의미를 부여할 때 유효합니다. 시간 표현이 특정 시간대 또는 현지 시간인 경우, 일광 절약 시간제 전환으로 인해 1시간이 건너뛰는 경우(일반적으로 봄철 밤)와 같이, 일부 날짜의 특정 시간대에 해당 시간대가 표현에서 건너뛰는 경우가 있을 수 있습니다. 예를 들어, 일광 절약 시간제가 오전 2시에 종료되어 시계가 오전 3시로 앞당겨지는 경우, 해당 날의 02:00:00부터 02:59:59.999까지의 날짜/시간은 유효하지 않습니다.

QDateTime::YearRange, QDate::isValid(), QTime::isValid()도 참조하십시오 .

qint64 QDateTime::msecsTo(const QDateTime &other) const

이 날짜/시간에서 ‘ other ’ 날짜/시간까지의 경과 시간을 밀리초 단위로 반환합니다.

비교 작업을 수행하기 전에, 두 날짜 및 시간 값은 모두 ' Qt::UTC ' 형식으로 변환됩니다. 이는 두 날짜 및 시간 중 하나에만 일광 절약 시간(DST)이 적용되고 다른 하나에는 적용되지 않는 경우에도 결과가 올바르게 산출되도록 하기 위함입니다.

other 날짜/시간이 이 날짜/시간보다 빠르면 반환되는 값은 음수입니다. 두 날짜/시간 중 하나라도 유효하지 않은 경우 0을 반환합니다.

addMSecs(), daysTo() 및 QTime::msecsTo()도 참조하십시오 .

int QDateTime::offsetFromUtc() const

이 날짜/시간의 UTC 기준 오프셋을 초 단위로 반환합니다.

결과는 ` timeSpec()`에 따라 달라집니다:

  • Qt::UTC 오프셋은 0입니다.
  • Qt::OffsetFromUTC 오프셋은 원래 설정된 값입니다.
  • Qt::LocalTime UTC를 기준으로 한 현지 시간의 오프셋이 반환됩니다.
  • Qt::TimeZone 시간대가 사용하는 오프셋이 반환됩니다.

마지막 두 가지의 경우, 일광 절약 시간제 오프셋을 고려하여 해당 날짜와 시간의 오프셋이 반환됩니다. 오프셋은 현지 시간 또는 지정된 시간대의 시간과 UTC 시간의 차이입니다. UTC보다 앞선 시간대(본초 자오선 동쪽)에서는 양수이고, UTC보다 뒤처진 시간대(본초 자오선 서쪽)에서는 음수입니다.

setTimeZone()도 참조하십시오 .

qint64 QDateTime::secsTo(const QDateTime &other) const

현재 날짜/시간에서 ‘ other ’ 날짜/시간까지의 초 수를 반환합니다.

비교를 수행하기 전에 두 날짜/시간은 모두 Qt::UTC 로 변환됩니다. 이는 두 날짜/시간 중 하나에만 일광 절약 시간(DST)이 적용되고 다른 하나에는 적용되지 않는 경우에도 결과가 정확하게 산출되도록 하기 위함입니다.

other 의 날짜/시간 값이 이 날짜/시간보다 이른 경우, 반환되는 값은 음수입니다. 두 날짜/시간 중 하나라도 유효하지 않은 경우 0을 반환합니다.

예시:

QDateTime now = QDateTime::currentDateTime();
QDateTime xmas(QDate(now.date().year(), 12, 25).startOfDay());
qDebug("There are %d seconds to Christmas", now.secsTo(xmas));

addSecs(), daysTo(), QTime::secsTo()도 참조하십시오 .

void QDateTime::setDate(QDate date, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)

이 날짜/시간의 날짜 부분을 date 로 설정합니다.

아직 시간이 설정되지 않은 경우, 자정으로 설정됩니다. date 가 유효하지 않은 경우, 이 QDateTime 도 유효하지 않게 됩니다.

date 과 time()이 이 날짜 및 시간의 시간 표현에 있어 전환 시점에 가까운 순간을 나타내는 경우, resolve 는 해당 상황이 어떻게 해결될지를 제어합니다.

참고: Qt 6.7이전 버전의 이 함수에는 resolve 매개변수가 없었기 때문에, 전환과 관련된 모호성을 해결할 방법이 없었습니다.

date(), setTime(), setTimeZone()도 참조하십시오 .

void QDateTime::setMSecsSinceEpoch(qint64 msecs)

1970년 UTC 기준 시작 시점으로부터 주어진 밀리초 수( msecs)만큼 지난 시점을 나타내는 날짜 및 시간을 설정합니다.

시간대를 지원하지 않는 시스템에서는 이 함수가 마치 현지 시간이 Qt::UTC 인 것처럼 동작합니다.

qint64 (std::numeric_limits<qint64>::min())의 최소값을 msecs 에 전달하면 정의되지 않은 동작이 발생한다는 점에 유의하십시오.

setSecsSinceEpoch(), toMSecsSinceEpoch() 및 fromMSecsSinceEpoch()도 참조하십시오 .

void QDateTime::setSecsSinceEpoch(qint64 secs)

1970년의 UTC 기준 시작 시점으로부터 지정된 초 수( secs)만큼 지난 시점을 나타내는 날짜 및 시간을 설정합니다.

시간대를 지원하지 않는 시스템에서는 이 함수가 마치 현지 시간이 Qt::UTC 인 것처럼 동작합니다.

setMSecsSinceEpoch(), toSecsSinceEpoch(), fromSecsSinceEpoch()도 참조하십시오 .

void QDateTime::setTime(QTime time, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)

이 날짜/시간의 시간 부분을 time 로 설정합니다. time 가 유효하지 않은 경우, 이 함수는 이를 자정으로 설정합니다. 따라서 QDateTime 에 설정된 시간을 기본값인 QTime 로 설정함으로써 기존 시간을 지울 수 있습니다:

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

date()와 time 가 이 날짜 및 시간의 시간 표현에 있어 전환 시점에 가까운 순간을 나타내는 경우, resolve 는 해당 상황이 어떻게 해결될지 제어합니다.

참고: Qt 6.7이전 버전의 이 함수에는 ` resolve ` 매개변수가 없었기 때문에, 전환과 관련된 모호성을 해결할 방법이 없었습니다.

또한 time(), setDate(), setTimeZone()도참조하십시오 .

void QDateTime::setTimeZone(const QTimeZone &toZone, QDateTime::TransitionResolution resolve = TransitionResolution::LegacyBehavior)

이 날짜/시간에 사용되는 시간대를 toZone 로 설정합니다.

이 datetime은 다른 시점을 가리킬 수 있습니다. 이 datetime은 toZone 의 시간 표현 방식을 사용하며, 이로 인해 변경되지 않은 date() 및 time()의 의미가 달라질 수 있습니다.

toZone 가 유효하지 않은 경우, 해당 날짜/시간도 유효하지 않게 됩니다. 그렇지 않은 경우, 호출 후 이 날짜/시간의 timeSpec() 값은 toZone.timeSpec() 와 일치합니다.

date()과 time()이 toZone 의 전환 시점에 가까운 순간을 나타내는 경우, resolve 는 해당 상황이 어떻게 해결될지를 제어합니다.

참고: Qt 6.7이전 버전의 이 함수에는 resolve 매개변수가 없었기 때문에, 전환과 관련된 모호성을 해결할 방법이 없었습니다.

timeRepresentation(), timeZone(), Qt::TimeSpec도 참조하십시오 .

[noexcept] void QDateTime::swap(QDateTime &other)

이 날짜 및 시간을 ` other`로 바꿉니다. 이 작업은 매우 빠르며 절대 실패하지 않습니다.

QTime QDateTime::time() const

datetime의 시간 부분을 반환합니다.

setTime(), date() 및 timeRepresentation()도 참조하십시오 .

[since 6.5] QTimeZone QDateTime::timeRepresentation() const

이 날짜/시간이 시간을 어떻게 나타내는지 식별하는 ` QTimeZone `를 반환합니다.

반환된 ` QTimeZone `의 ` timeSpec()`는 이 datetime의 ` ()`와 일치합니다. 만약 ` Qt::TimeZone `가 아니라면, 반환된 ` QTimeZone `는 시간 표현입니다. 두 객체의 ` timeSpec()`가 ` Qt::OffsetFromUTC`인 경우, 반환된 ` QTimeZone`의 `fixedSecondsAheadOfUtc()`가 오프셋을 제공합니다. ` timeSpec()`가 ` Qt::TimeZone`인 경우, ` QTimeZone ` 객체 자체가 해당 시간대의 전체 표현입니다.

이 함수는 Qt 6.5에서 도입되었습니다.

timeZone(), setTimeZone() 및 QTimeZone::asBackendZone()도 참조하십시오 .

Qt::TimeSpec QDateTime::timeSpec() const

datetime의 시간 표기법을 반환합니다.

이 메서드는 시간 표현을 현지 시간, UTC, UTC로부터의 고정 오프셋(오프셋을 명시하지 않음) 또는 시간대(해당 시간대의 세부 정보를 제공하지 않음)로 분류합니다. timeRepresentation().timeSpec() 와 동일합니다.

setTimeZone(), timeRepresentation(), date(), time()도 참조하십시오 .

QTimeZone QDateTime::timeZone() const

datetime의 시간대를 반환합니다.

결과는 timeRepresentation().asBackendZone() 와 동일합니다. 모든 경우에 결과의 timeSpec() 값은 Qt::TimeZone 입니다.

timeSpec()의 Qt::LocalTime 가 인 경우, 결과는 이 메서드가 호출된 시점의 현지 시간을 나타냅니다. 이 결과는 해당 값을 얻은 QDateTime 가 시스템 시간대의 후속 변경 사항을 반영하더라도, 그 변경 사항을 반영하지 않습니다.

timeRepresentation(), setTimeZone(), Qt::TimeSpec 및 QTimeZone::asBackendZone()도 참조하십시오 .

QString QDateTime::timeZoneAbbreviation() const

이 날짜 및 시간의 시간대 약어를 반환합니다.

반환되는 문자열은 ` timeSpec()`에 따라 달라집니다:

참고: 약어가 고유하다고 보장되지는 않습니다. 즉, 서로 다른 시간대가 동일한 약어를 가질 수도 있습니다. Qt::LocalTime 및 Qt::TimeZone 의 경우, 호스트 시스템에서 반환될 때 약어가 현지화될 수 있습니다.

timeSpec() 및 QTimeZone::abbreviation()도 참조하십시오 .

CFDateRef QDateTime::toCFDate() const

QDateTime 에서 CFDate를 생성합니다.

호출자는 CFDate 객체를 소유하며, 이를 해제할 책임이 있습니다.

fromCFDate()도 참조하십시오 .

QDateTime QDateTime::toLocalTime() const

이 날짜 및 시간의 사본을 현지 시간으로 변환하여 반환합니다.

결과는 이 날짜 및 시간과 동일한 시점을 나타내며, 이 날짜 및 시간과 동일합니다.

예시:

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);

toTimeZone(), toUTC(), toOffsetFromUtc()도 참조하십시오 .

qint64 QDateTime::toMSecsSinceEpoch() const

1970년 UTC 기준 시작 시점부터 경과한 밀리초 수로 날짜와 시간을 반환합니다.

시간대를 지원하지 않는 시스템에서는 이 함수가 현지 시간이 ` Qt::UTC`인 것처럼 동작합니다.

이 객체에 저장된 날짜 및 시간이 유효하지 않은 경우, 이 함수의 동작은 정의되지 않습니다. 그러나 유효한 모든 날짜에 대해 이 함수는 고유한 값을 반환합니다.

toSecsSinceEpoch(), setMSecsSinceEpoch(), fromMSecsSinceEpoch()도 참조하십시오 .

NSDate *QDateTime::toNSDate() const

QDateTime 를 사용하여 NSDate를 생성합니다.

NSDate 객체는 자동 해제됩니다.

fromNSDate()도 참조하십시오 .

QDateTime QDateTime::toOffsetFromUtc(int offsetSeconds) const

지정된 offsetSeconds 을 사용하여 이 datetime을 Qt::OffsetFromUTC 사양으로 변환한 사본을 반환합니다. toTimeZone(QTimeZone::fromSecondsAheadOfUtc(offsetSeconds)) 와 동일합니다.

offsetSeconds 가 0인 경우, UTC 날짜 및 시간이 반환됩니다.

결과는 이 날짜/시간과 동일한 시점을 나타내며, 이 날짜/시간과 동일합니다.

offsetFromUtc() 및 toTimeZone()도 참조하십시오 .

qint64 QDateTime::toSecsSinceEpoch() const

1970년 UTC 기준 시작 시점부터 경과한 초 수로 날짜와 시간을 반환합니다.

시간대를 지원하지 않는 시스템에서는 이 함수가 마치 현지 시간이 ` Qt::UTC`인 것처럼 동작합니다.

이 객체에 저장된 날짜 및 시간이 유효하지 않은 경우, 이 함수의 동작은 정의되지 않습니다. 그러나 유효한 모든 날짜에 대해 이 함수는 고유한 값을 반환합니다.

toMSecsSinceEpoch(), fromSecsSinceEpoch() 및 setSecsSinceEpoch()도 참조하십시오 .

[since 6.4] std::chrono::sys_time<std::chrono::milliseconds> QDateTime::toStdSysMilliseconds() const

std::chrono::system_clock 를 시계로 사용하여 이 datetime 객체를 밀리초 단위로 표현된 해당 시간점으로 변환합니다.

참고: 이 함수를 사용하려면 C++20이 필요합니다.

이 함수는 Qt 6.4에서 도입되었습니다.

fromStdTimePoint() 및 toMSecsSinceEpoch()도 참조하십시오 .

[since 6.4] std::chrono::sys_seconds QDateTime::toStdSysSeconds() const

std::chrono::system_clock 를 시계로 사용하여 이 datetime 객체를 초 단위로 표현된 해당 시점으로 변환합니다.

참고: 이 함수를 사용하려면 C++20이 필요합니다.

이 함수는 Qt 6.4에서 도입되었습니다.

fromStdTimePoint() 및 toSecsSinceEpoch()도 참조하십시오 .

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

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

datetime를 문자열로 반환합니다. ` format ` 매개변수는 결과 문자열의 형식을 결정합니다. ` cal `가 지정되면, 날짜를 표현하는 데 사용되는 달력을 결정하며, 기본값은 그레고리력입니다. Qt 5.14 이전 버전에서는 ` cal ` 매개변수가 없었으며, 항상 그레고리력이 사용되었습니다. format 매개변수에서 각각 시간과 날짜에 대해 지원되는 지정자에 대해서는 QTime::toString() 및 QDate::toString()을 참조하십시오.

작은 따옴표로 묶인 비어 있지 않은 문자열은 서식 지정 문자가 포함되어 있더라도 출력 문자열에 그대로(따옴표는 제거된 상태로) 포함됩니다. 연속된 두 개의 작은따옴표("''")는 출력에서 작은따옴표 하나로 대체되며, 그대로 출력되는 시퀀스의 시작이나 끝을 나타내지는 않습니다. 포맷 문자열에 포함된 그 외의 모든 문자는 출력 문자열에 있는 그대로 포함됩니다.

구분 기호가 없는 형식(예: "ddMM")도 지원되지만, 결과 문자열이 항상 신뢰할 수 있게 읽히지는 않으므로 주의해서 사용해야 합니다(예: "dM"이 "212"를 생성하는 경우, 이는 12월 2일 또는 2월 21일을 의미할 수 있습니다).

포맷 문자열 예시 ( QDateTime 가 2001년 5월 21일 14:13:09.120이라고 가정):

형식결과
dd.MM.yyyy21.05.2001
ddd MMMM d yy5월 21일 화요일 01
hh:mm:ss.zzz14:13:09.120
hh:mm:ss.z14:13:09.12
h:m:s ap오후 2:13:9

날짜 및 시간이 유효하지 않은 경우, 빈 문자열이 반환됩니다.

참고: 요일 및 월 이름과 AM/PM 표시기는 영어로 제공됩니다(C 로케일). 현지화된 월 및 요일 이름과 현지화된 AM/PM 형식을 얻으려면 QLocale::system().toDateTime()을 사용하십시오.

fromString(), QDate::toString(), QTime::toString() 및 QLocale::toString()도 참조하십시오 .

QString QDateTime::toString(QStringView format) const

이 함수는 ` QDateTime::toString()`를 오버로드합니다.

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

지정된 format 에 따라 날짜 및 시간을 문자열로 반환합니다.

format 가 Qt::TextDate 인 경우, 문자열은 기본 형식으로 포맷됩니다. 요일 및 월 이름은 영어로 표시됩니다. 이 포맷의 예시는 "Wed May 20 03:40:13 1998"입니다. 지역화된 포맷에 대해서는 QLocale::toString()를 참조하십시오.

format 가 Qt::ISODate 인 경우, 문자열 형식은 날짜 및 시간 표기를 위한 ISO 8601 확장 사양에 따르며, QDateTime 의 timeSpec()에 따라 yyyy-MM-ddTHH:mm:ss[Z|±HH:mm] 형식을 취합니다. timeSpec()가 Qt::UTC 인 경우, 문자열 뒤에 Z가 추가됩니다. timeSpec()가 Qt::OffsetFromUTC 인 경우, UTC로부터의 시·분 단위 오프셋이 문자열 뒤에 추가됩니다. ISO 8601 날짜에 밀리초를 포함하려면, format Qt::ISODateWithMs 를 사용하십시오. 이는 yyyy-MM-ddTHH:mm:ss.zzz[Z|±HH:mm]에 해당합니다.

format 가 Qt::RFC2822Date 인 경우, 문자열은 RFC 2822에 따라 서식이 지정됩니다.

날짜 및 시간이 유효하지 않은 경우, 빈 문자열이 반환됩니다.

경고: Qt::ISODate 형식은 0에서 9999 사이의 연도에만 유효합니다.

이 함수는 QDateTime::toString()을 오버로드합니다.

fromString(), QDate::toString(), QTime::toString() 및 QLocale::toString()도 참조하십시오 .

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

이 함수는 ` QDateTime::toString()`를 오버로드합니다.

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

지정된 ` timeZone`로 변환된 이 날짜 및 시간의 복사본을 반환합니다.

결과는 이 날짜 및 시간과 동일한 시점을 나타내며, 이 날짜 및 시간과 동일합니다.

결과는 timeZone 의 시간 표현 방식으로 해당 시점을 나타냅니다. 예를 들어:

QDateTime local(QDateTime::currentDateTime());
QDateTime UTC(local.toTimeZone(QTimeZone::UTC));
qDebug() << "Local time is:" << local;
qDebug() << "UTC time is:" << UTC;
qDebug() << "No difference between times represented:" << local.secsTo(UTC);

timeZone 가 유효하지 않은 경우, datetime도 유효하지 않게 됩니다. 그렇지 않은 경우, 반환된 datetime의 timeSpec() 값은 timeZone.timeSpec() 과 일치합니다.

timeRepresentation(), toLocalTime(), toUTC() 및 toOffsetFromUtc()도 참조하십시오 .

QDateTime QDateTime::toUTC() const

이 날짜 및 시간의 복사본을 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);

toTimeZone(), toLocalTime() 및 toOffsetFromUtc()도 참조하십시오 .

[since 6.4] QDateTime &QDateTime::operator+=(std::chrono::milliseconds duration)

지정된 ‘ duration ’를 추가하여 이 datetime 객체를 수정합니다.

duration 가 양수이면 업데이트된 객체는 더 늦은 시점이 되고, 음수이면 더 이른 시점이 됩니다. 이 datetime 객체에 대한 참조를 반환합니다.

이 datetime이 유효하지 않은 경우, 이 함수는 아무런 효과도 없습니다.

이 함수는 Qt 6.4에서 도입되었습니다.

addMSecs()도 참조하십시오 .

[since 6.4] QDateTime &QDateTime::operator-=(std::chrono::milliseconds duration)

지정된 ‘ duration ’ 값을 빼서 이 datetime 객체를 수정합니다.

duration 가 양수이면 업데이트된 객체의 시각은 더 이른 시점이 되고, 음수이면 더 늦은 시점이 됩니다. 이 datetime 객체에 대한 참조를 반환합니다.

이 datetime이 유효하지 않은 경우, 이 함수는 아무런 효과도 미치지 않습니다.

이 함수는 Qt 6.4에서 도입되었습니다.

addMSecs도 참조하십시오 .

[noexcept] QDateTime &QDateTime::operator=(const QDateTime &other)

other 의 날짜/시간을 이 객체에 복사하고, 복사된 값을 반환합니다.

관련 비회원

[noexcept] bool operator!=(const QDateTime &lhs, const QDateTime &rhs)

lhs 가 rhs 와 다를 경우 true 을 반환하고, 그렇지 않은 경우 false 을 반환합니다.

서로 다른 시간 표현 방식을 사용하는 두 개의 날짜/시간은 UTC에 대한 오프셋이 다를 수 있습니다. 이 경우, date()과 time()의 값이 서로 다르더라도 그 차이가 UTC 오프셋의 차이와 일치한다면, 두 값은 동등한 것으로 비교될 수 있습니다. date() 와 time() 가 일치할 경우, UTC에 대한 오프셋이 더 큰 쪽이 오프셋이 더 작은 쪽보다 작습니다(더 이른 시간입니다). 결과적으로, 날짜 및 시간 값은 약한 순서만 가집니다.

5.14 버전부터는 모든 유효하지 않은 날짜/시간은 서로 동등하며, 모든 유효한 날짜/시간보다 작습니다.

operator==()도 참조하십시오 .

[since 6.4] QDateTime operator+(const QDateTime &dateTime, std::chrono::milliseconds duration)

[since 6.4] QDateTime operator+(std::chrono::milliseconds duration, const QDateTime &dateTime)

dateTime 보다 duration 밀리초 뒤( duration 가 음수인 경우 보다 앞)의 날짜 및 시간을 포함하는 QDateTime 객체를 반환합니다.

dateTime 가 유효하지 않은 경우, 유효하지 않은 datetime이 반환됩니다.

이 함수들은 Qt 6.4에서 도입되었습니다.

addMSecs()도 참조하십시오 .

[since 6.4] std::chrono::milliseconds operator-(const QDateTime &lhs, const QDateTime &rhs)

lhs 부터 rhs 까지의 시간을 밀리초 단위로 반환합니다.

lhs 가 rhs 보다 이른 경우, 결과는 음수가 됩니다. 두 날짜/시간 중 하나라도 유효하지 않은 경우 0ms를 반환합니다.

이 함수는 Qt 6.4에서 도입되었습니다.

msecsTo()도 참조하십시오 .

[since 6.4] QDateTime operator-(const QDateTime &dateTime, std::chrono::milliseconds duration)

dateTime 보다 duration 밀리초 앞선(또는 duration 가 음수인 경우 보다 늦은) 날짜 및 시간을 포함하는 QDateTime 객체를 반환합니다.

dateTime 가 유효하지 않은 경우, 유효하지 않은 datetime이 반환됩니다.

이 함수는 Qt 6.4에서 도입되었습니다.

addMSecs()도 참조하십시오 .

[noexcept] bool operator<(const QDateTime &lhs, const QDateTime &rhs)

lhs 가 rhs 보다 앞선 경우 true 를 반환하고, 그렇지 않은 경우 false 를 반환합니다.

서로 다른 시간 표현 방식을 사용하는 두 날짜/시간은 UTC에 대한 오프셋이 다를 수 있습니다. 이 경우, date()과 time()의 값이 서로 다르더라도 그 차이가 UTC 오프셋의 차이와 일치한다면 두 값은 동등한 것으로 비교될 수 있습니다. date() 와 time() 가 일치할 경우, UTC에 대한 오프셋이 더 큰 쪽이 오프셋이 더 작은 쪽보다 작습니다(더 이른 시간입니다). 결과적으로, 날짜와 시간은 약한 순서 관계만 갖습니다.

5.14 버전부터는 모든 유효하지 않은 날짜 및 시간 값은 서로 동등하며, 모든 유효한 날짜 및 시간 값보다 작게 간주됩니다.

operator==()도 참조하십시오 .

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

` dateTime `를 ` out ` 스트림에 기록합니다.

'Qt 데이터 유형 직렬화'항목도 참조하십시오 .

[noexcept] bool operator<=(const QDateTime &lhs, const QDateTime &rhs)

lhs 가 rhs 보다 빠르거나 같으면 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.

서로 다른 시간 표기법을 사용하는 두 개의 날짜/시간은 UTC에 대한 오프셋이 다를 수 있습니다. 이 경우, date()과 time()의 값이 서로 다르더라도 그 차이가 UTC 오프셋의 차이와 일치한다면 두 값은 동등한 것으로 비교될 수 있습니다. date() 와 time() 가 일치할 경우, UTC에 대한 오프셋이 더 큰 쪽이 오프셋이 더 작은 쪽보다 작습니다(더 이른 시간입니다). 결과적으로, 날짜와 시간은 약한 순서만 가집니다.

5.14 버전부터는 모든 유효하지 않은 날짜/시간은 서로 동등하며, 모든 유효한 날짜/시간보다 작습니다.

operator==()도 참조하십시오 .

[noexcept] bool operator==(const QDateTime &lhs, const QDateTime &rhs)

lhs 가 rhs 와 동일한 시점을 나타내는 경우 true 를 반환하고, 그렇지 않은 경우 false 를 반환합니다.

서로 다른 시간 표현 방식을 사용하는 두 날짜/시간은 UTC에 대한 오프셋이 다를 수 있습니다. 이 경우, date()과 time()의 값이 다르더라도 그 차이가 UTC 오프셋의 차이와 일치한다면 두 값은 동등한 것으로 비교될 수 있습니다. date() 와 time() 가 일치할 경우, UTC에 대한 오프셋이 더 큰 쪽이 오프셋이 더 작은 쪽보다 작습니다(더 이른 시간입니다). 결과적으로, 날짜와 시간은 약한 순서 관계만을 가집니다.

5.14 버전부터 모든 유효하지 않은 날짜/시간은 서로 동등하며, 모든 유효한 날짜/시간보다 작습니다.

operator!=(), operator<(), operator<=(), operator>(), operator>=()도 참조하십시오 .

[noexcept] bool operator>(const QDateTime &lhs, const QDateTime &rhs)

lhs 가 rhs 보다 늦을 경우 true 를 반환하고, 그렇지 않으면 false 를 반환합니다.

서로 다른 시간 표현 방식을 사용하는 두 날짜/시간은 UTC에 대한 오프셋이 다를 수 있습니다. 이 경우, date()과 time()의 값이 서로 다르더라도 그 차이가 UTC 오프셋의 차이와 일치한다면, 두 값은 동등한 것으로 비교될 수 있습니다. date() 과 time() 이 일치할 경우, UTC에 대한 오프셋이 더 큰 쪽이 오프셋이 더 작은 쪽보다 작습니다(더 이릅니다). 결과적으로, 날짜 및 시간 값은 약한 순서 관계만을 가집니다.

5.14 버전부터는 모든 유효하지 않은 날짜/시간은 서로 동등하며, 모든 유효한 날짜/시간보다 작습니다.

operator==()도 참조하십시오 .

[noexcept] bool operator>=(const QDateTime &lhs, const QDateTime &rhs)

lhs 이 rhs 보다 늦거나 같으면 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

서로 다른 시간 표현 방식을 사용하는 두 날짜/시간은 UTC에 대한 오프셋이 다를 수 있습니다. 이 경우, date()과 time()의 값이 서로 다르더라도 그 차이가 UTC 오프셋의 차이와 일치한다면, 두 값은 동등한 것으로 비교될 수 있습니다. date() 와 time() 가 일치할 경우, UTC에 대한 오프셋이 더 큰 쪽이 오프셋이 더 작은 쪽보다 작습니다(더 이른 시간입니다). 결과적으로, 날짜와 시간은 약한 순서 관계만을 갖습니다.

5.14 버전부터는 모든 유효하지 않은 날짜/시간 값은 서로 동등하며, 모든 유효한 날짜/시간 값보다 작습니다.

operator==()도 참조하십시오 .

QDataStream &operator>>(QDataStream &in, QDateTime &dateTime)

in 스트림에서 날짜 및 시간을 읽어 dateTime 에 저장합니다.

'Qt 데이터 유형 직렬화'항목도 참조하십시오 .

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.