QDate Class
QDate 클래스는 날짜 함수를 제공합니다. 더 보기...
Header: | #include <QDate> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
이 클래스는 매우 유사합니다.
이 클래스는 std::chrono::year_month_day, std::chrono::year_month_day_last, std::chrono::year_month_weekday 및 std::chrono::year_month_weekday_last와 강력하게 비교 가능합니다.
이러한 비교 연산자는 C++20을 사용할 때만 사용할 수 있습니다.
참고: 이 클래스의 모든 함수는 재진입합니다.
공용 함수
QDate() | |
(since 6.4) | QDate(std::chrono::year_month_day date) |
(since 6.4) | QDate(std::chrono::year_month_day_last date) |
(since 6.4) | QDate(std::chrono::year_month_weekday date) |
(since 6.4) | QDate(std::chrono::year_month_weekday_last date) |
QDate(int y, int m, int d) | |
QDate | addDays(qint64 ndays) const |
(since 6.4) QDate | addDuration(std::chrono::days ndays) const |
QDate | addMonths(int nmonths, QCalendar cal) const |
QDate | addMonths(int nmonths) const |
QDate | addYears(int nyears, QCalendar cal) const |
QDate | addYears(int nyears) const |
int | day(QCalendar cal) const |
int | day() const |
int | dayOfWeek(QCalendar cal) const |
int | dayOfWeek() const |
int | dayOfYear(QCalendar cal) const |
int | dayOfYear() const |
int | daysInMonth(QCalendar cal) const |
int | daysInMonth() const |
int | daysInYear(QCalendar cal) const |
int | daysInYear() const |
qint64 | daysTo(QDate d) const |
QDateTime | endOfDay(const QTimeZone &zone) const |
(since 6.5) QDateTime | endOfDay() const |
(until 6.9) QDateTime | endOfDay(Qt::TimeSpec spec, int offsetSeconds = 0) const |
void | getDate(int *year, int *month, int *day) const |
bool | isNull() const |
bool | isValid() const |
int | month(QCalendar cal) const |
int | month() const |
bool | setDate(int year, int month, int day) |
bool | setDate(int year, int month, int day, QCalendar cal) |
QDateTime | startOfDay(const QTimeZone &zone) const |
(since 6.5) QDateTime | startOfDay() const |
(until 6.9) QDateTime | startOfDay(Qt::TimeSpec spec, int offsetSeconds = 0) const |
qint64 | toJulianDay() const |
std::chrono::sys_days | toStdSysDays() const |
QString | toString(QStringView format, QCalendar cal) 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 |
int | weekNumber(int *yearNumber = nullptr) const |
int | year(QCalendar cal) const |
int | year() const |
정적 공용 멤버
QDate | currentDate() |
QDate | fromJulianDay(qint64 jd) |
(since 6.4) QDate | fromStdSysDays(const std::chrono::sys_days &days) |
QDate | fromString(const QString &string, Qt::DateFormat format = Qt::TextDate) |
QDate | fromString(const QString &string, const QString &format, int baseYear, QCalendar cal) |
(since 6.0) QDate | fromString(QStringView string, Qt::DateFormat format = Qt::TextDate) |
(since 6.0) QDate | fromString(QStringView string, QStringView format, QCalendar cal) |
(since 6.7) QDate | fromString(QStringView string, QStringView format, int baseYear = QLocale::DefaultTwoDigitBaseYear) |
(since 6.0) QDate | fromString(const QString &string, QStringView format, QCalendar cal) |
(since 6.7) QDate | fromString(const QString &string, QStringView format, int baseYear = QLocale::DefaultTwoDigitBaseYear) |
QDate | fromString(const QString &string, const QString &format, QCalendar cal) |
(since 6.7) QDate | fromString(const QString &string, const QString &format, int baseYear = QLocale::DefaultTwoDigitBaseYear) |
(since 6.7) QDate | fromString(QStringView string, QStringView format, int baseYear, QCalendar cal) |
(since 6.0) QDate | fromString(const QString &string, QStringView format, int baseYear, QCalendar cal) |
bool | isLeapYear(int year) |
bool | isValid(int year, int month, int day) |
관련 비회원
bool | operator!=(const QDate &lhs, const QDate &rhs) |
bool | operator<(const QDate &lhs, const QDate &rhs) |
QDataStream & | operator<<(QDataStream &out, QDate date) |
bool | operator<=(const QDate &lhs, const QDate &rhs) |
bool | operator==(const QDate &lhs, const QDate &rhs) |
bool | operator>(const QDate &lhs, const QDate &rhs) |
bool | operator>=(const QDate &lhs, const QDate &rhs) |
QDataStream & | operator>>(QDataStream &in, QDate &date) |
상세 설명
QDate 객체는 생성 시 사용되거나 시스템에서 제공된 달력, 로캘 또는 기타 설정에 관계없이 특정 날짜를 나타냅니다. 이 객체는 양력 또는 QCalendar 객체로 제공된 달력과 관련하여 해당 날짜를 나타내는 연도, 월 및 요일을 보고할 수 있습니다. QDate 객체는 const에 대한 참조가 아닌 값으로 전달되어야 하며, 간단히 qint64
으로 패키징됩니다.
QDate 객체는 일반적으로 연도, 월, 일 숫자를 명시적으로 지정하여 생성됩니다. QDate는 100보다 작은 연도 숫자를 제시된 대로, 즉 오프셋을 추가하지 않고 1~99년으로 해석한다는 점에 유의하세요. 정적 함수 currentDate()는 시스템 시계에서 읽은 날짜가 포함된 QDate 객체를 만듭니다. setDate ()를 사용하여 명시적 날짜를 설정할 수도 있습니다. fromString () 함수는 문자열과 문자열 내의 날짜를 해석하는 데 사용되는 날짜 형식이 지정된 QDate를 반환합니다.
year(), month() 및 day() 함수는 연도, 월, 일 숫자에 대한 액세스를 제공합니다. 이러한 값 중 두 개 이상의 값이 필요한 경우 QCalendar::partsFromDate()를 호출하는 것이 더 효율적이므로 반복되는 (잠재적으로 비용이 많이 드는) 달력 계산을 절약할 수 있습니다.
또한 dayOfWeek() 및 dayOfYear() 함수도 제공됩니다. toString ()는 동일한 정보를 텍스트 형식으로 제공합니다. QLocale 은 일 번호를 이름에 매핑할 수 있고 QCalendar 은 월 번호를 이름에 매핑할 수 있습니다.
QDate는 두 QDate 객체를 비교할 수 있는 전체 연산자 집합을 제공하며, 여기서 작을수록 이전을 의미하고 클수록 이후를 의미합니다.
addDays()를 사용하여 지정된 일 수만큼 날짜를 증가(또는 감소)시킬 수 있습니다. 마찬가지로 addMonths() 및 addYears()을 사용할 수 있습니다. daysTo () 함수는 두 날짜 사이의 일 수를 반환합니다.
daysInMonth() 및 daysInYear() 함수는 각각 해당 날짜의 월과 연도의 일 수를 반환합니다. isLeapYear () 함수는 날짜가 윤년인지 여부를 나타냅니다. QCalendar 에서도 이 정보를 제공할 수 있으며, 경우에 따라 더 편리하게 사용할 수 있습니다.
참고
참고: 문자열 형식과의 모든 변환은 C 로캘을 사용하여 수행됩니다. 현지화된 변환에 대해서는 QLocale 을 참조하세요.
그레고리력에서는 연도 0이 없습니다. 해당 연도의 날짜는 유효하지 않은 것으로 간주됩니다. 연도 -1은 "그리스도 1년 전" 또는 "일반 시대 1년 전"입니다. 기원전 1월 1일의 전날인 QDate(1, 1, 1)는 기원전 12월 31일인 QDate(-1, 12, 31)입니다. 다른 다양한 달력도 비슷하게 작동합니다( QCalendar::hasYearZero() 참조).
유효한 날짜의 범위
날짜는 내부적으로 인접한 범위의 모든 날을 정수로 세는 줄리안 데이 번호로 저장되며, 그레고리력의 경우 기원전 4714년 11월 24일이 줄리안 데이 0(양력으로는 기원전 4713년 1월 1일)이 됩니다. 절대 날짜를 저장하는 효율적이고 정확한 방법일 뿐만 아니라 날짜를 히브리, 이슬람, 중국어 등 다른 달력 체계로 변환하는 데도 적합합니다. 율리우스력 날짜는 QDate::toJulianDay()를 사용하여 얻을 수 있으며 QDate::fromJulianDay()를 사용하여 설정할 수 있습니다.
QDate가 표현할 수 있는 율리우스력 숫자의 범위는 기술적인 이유로 -784350574879 ~ 784354017364 사이로 제한되며, 이는 기원전 20억 년 이전부터 기원후 20억 년 이후까지를 의미합니다. 이는 QDateTime 가 나타낼 수 있는 날짜 범위보다 7배 이상 넓은 범위입니다.
QTime, QDateTime, QCalendar, QDateTime::YearRange, QDateEdit, QDateTimeEdit, QCalendarWidget 을참조하세요 .
멤버 함수 문서
[constexpr noexcept, since 6.4]
QDate::QDate(std::chrono::year_month_day date)
[constexpr noexcept, since 6.4]
QDate::QDate(std::chrono::year_month_day_last date)
[constexpr noexcept, since 6.4]
QDate::QDate(std::chrono::year_month_weekday date)
[constexpr noexcept, since 6.4]
QDate::QDate(std::chrono::year_month_weekday_last date)
date 과 같은 날짜를 나타내는 QDate 을 생성합니다. 이렇게 하면 표준 라이브러리 캘린더 클래스와 Qt 날짜 시간 클래스 간에 쉽게 상호 운용할 수 있습니다.
예를 들어
// 23 April 2012: QDate date = std::chrono::year_month_day(std::chrono::year(2012), std::chrono::month(4), std::chrono::day(23)); // Same, under `using std::chrono` convenience: QDate dateWithLiterals1 = 23 / April / 2012y; QDate dateWithLiterals2 = 2012y / April / 23; // Last day of February 2000 QDate lastDayFeb2020 = 2000y / February / last; // First Monday of January 2020: QDate firstMonday = 2020y / January / Monday[0]; // Last Monday of January 2020: QDate lastMonday = 2020y / January / Monday[last];
참고: QDate 과 달리, std::chrono::year 와 관련 클래스는 연도 0을 사용합니다. 즉, date 이 0년 또는 그 이전인 경우, 결과 QDate 객체는 date 에 지정된 것보다 1 년이 적습니다.
참고: 이 함수는 C++20이 필요합니다.
이 함수는 Qt 6.4에 도입되었습니다.
QString QDate::toString(QStringView format, QCalendar cal) const
QString QDate::toString(const QString &format, QCalendar cal) const
날짜를 문자열로 반환합니다. format 매개변수는 결과 문자열의 형식을 결정합니다. cal 을 제공하면 날짜를 나타내는 데 사용되는 달력이 결정되며, 기본값은 그레고리력입니다. Qt 5.14 이전에는 cal 매개 변수가 없었으며 항상 그레고리력이 사용되었습니다.
다음 표현식은 format 매개변수에 사용할 수 있습니다:
표현식 | 출력 |
---|---|
d | 선행 0이 없는 숫자로서의 요일(1 ~ 31) |
dd | 선행 0이 있는 숫자로서의 요일(01~31) |
ddd | 축약된 요일 이름('월' ~ '일'). |
dddd | 긴 날짜 이름('월요일' ~ '일요일'). |
M | 선행 0이 없는 숫자로서의 월(1~12) |
MM | 선행 0이 포함된 숫자로서의 월(01~12) |
MMM | 축약된 월 이름('1월' ~ '12월'). |
MMMM | 긴 월 이름('1월' ~ '12월'). |
yy | 두 자리 숫자로 된 연도(00~99)입니다. |
yyyy | 4자리 숫자로 된 연도입니다. 연도가 음수인 경우 마이너스 기호가 앞에 추가되어 5자가 됩니다. |
작은따옴표로 묶인 모든 문자 시퀀스는 서식 지정 문자가 포함되어 있더라도 출력 문자열에 따옴표가 제거된 그대로 포함됩니다. 연속된 작은따옴표("''") 두 개는 출력에서 작은따옴표로 대체됩니다. 서식 문자열의 다른 모든 문자는 출력 문자열에 그대로 포함됩니다.
구분 기호가 없는 형식(예: "ddMM")은 지원되지만 결과 문자열을 항상 안정적으로 읽을 수 있는 것은 아니므로 주의해서 사용해야 합니다(예: "dM"이 "212"를 생성하면 12월 2일 또는 2월 21일을 의미할 수 있음).
형식 문자열 예시( QDate 가 1969년 7월 20일이라고 가정):
형식 | 결과 |
---|---|
dd.MM.yyyy | 20.07.1969 |
ddd MMMM d yy | 일요일 7월 20일 69 |
'그 날은' dddd | 요일은 일요일입니다. |
날짜/시간이 유효하지 않으면 빈 문자열이 반환됩니다.
참고: 요일 및 월 이름은 영어로 제공됩니다(C 로캘). 현지화된 월 및 일 이름을 가져오려면 QLocale::system()를 사용합니다.toString().
참고: 포맷 문자를 사용하여 위 표에서 가장 긴 표현식보다 여러 번 반복되는 경우 이 부분은 구분 기호 없이 여러 개의 표현식으로 읽히며, 위의 가장 긴 표현식은 복사본 수만큼 반복되고 더 짧은 표현식일 수 있는 잔류문자로 끝납니다. 따라서 5월의 날짜에 대해 'MMMMMMMMMM'
는 "MayMay05"
을 출력에 기여합니다.
fromString(), QDateTime::toString(), QTime::toString() 및 QLocale::toString()도 참조하세요 .
[constexpr]
QDate::QDate()
널 날짜를 생성합니다. Null 날짜는 유효하지 않습니다.
QDate::QDate(int y, int m, int d)
연도 y, 월 m, 일 d 로 날짜를 구성합니다.
날짜는 그레고리력으로 이해됩니다. 지정된 날짜가 유효하지 않으면 날짜가 설정되지 않고 isValid()는 false
을 반환합니다.
경고: 1~99년은 그대로 해석됩니다. 연도 0은 유효하지 않습니다.
isValid() 및 QCalendar::dateFromParts()도 참조하세요 .
QDate QDate::addDays(qint64 ndays) const
이 객체의 날짜보다 늦은 날짜 ndays (또는 음수인 경우 ndays )가 포함된 QDate 객체를 반환합니다.
현재 날짜가 유효하지 않거나 새 날짜가 범위를 벗어난 경우 null 날짜를 반환합니다.
addMonths(), addYears() 및 daysTo()도 참조하세요 .
[since 6.4]
QDate QDate::addDuration(std::chrono::days ndays) const
이 객체의 날짜보다 늦은 날짜 ndays (또는 음수인 경우 ndays )가 포함된 QDate 객체를 반환합니다.
현재 날짜가 유효하지 않거나 새 날짜가 범위를 벗어난 경우 null 날짜를 반환합니다.
참고: std::chrono::months
또는 std::chrono::years
로 표현된 기간을 추가하면 addMonths() 또는 addYears()를 사용하여 얻은 것과 동일한 결과가 나오지 않습니다. 전자는 태양력을 기준으로 계산된 고정 기간이고, 후자는 그레고리력의 월/년 정의를 사용합니다.
참고: 이 함수는 C++20이 필요합니다.
이 함수는 Qt 6.4에 도입되었습니다.
addMonths(), addYears() 및 daysTo()도 참조하십시오 .
QDate QDate::addMonths(int nmonths, QCalendar cal) const
이 객체의 날짜보다 늦은 날짜 nmonths (또는 음수인 경우 nmonths )가 포함된 QDate 객체를 반환합니다.
달력이 제공된 경우 cal 을 사용하고, 그렇지 않으면 그레고리력을 사용합니다.
참고: 결과 월/연도에 끝나는 일/월 조합이 없는 경우 이 함수는 선택한 월의 가장 최근 유효한 날짜를 반환합니다.
addDays() 및 addYears()도 참조하세요 .
QDate QDate::addMonths(int nmonths) const
과부하가 걸린 기능입니다.
QDate QDate::addYears(int nyears, QCalendar cal) const
이 객체의 날짜보다 늦은 날짜 nyears (또는 음수인 경우 nyears )가 포함된 QDate 객체를 반환합니다.
제공된 경우 달력으로 cal 을 사용하고, 그렇지 않으면 그레고리력을 사용합니다.
참고: 결과 연도에 끝 날짜/월 조합이 존재하지 않는 경우(예: 그레고리력의 경우 날짜가 2월 29일이고 최종 연도가 윤년이 아닌 경우) 이 함수는 주어진 월에서 가장 최근의 유효한 날짜(예: 2월 28일)를 반환합니다.
addDays() 및 addMonths()도 참조하세요 .
QDate QDate::addYears(int nyears) const
과부하가 걸린 기능입니다.
[static]
QDate QDate::currentDate()
시스템 시계의 현재 날짜를 반환합니다.
QTime::currentTime() 및 QDateTime::currentDateTime()도 참조하세요 .
int QDate::day(QCalendar cal) const
이 날짜의 월 요일을 반환합니다.
달력이 제공된 경우 cal 을 사용하고, 그렇지 않으면 그레고리력을 사용합니다(반환 범위는 1에서 31 사이). 날짜가 유효하지 않으면 0을 반환합니다.
year(), month(), dayOfWeek() 및 QCalendar::partsFromDate()도 참조하세요 .
int QDate::day() const
과부하가 걸린 기능입니다.
int QDate::dayOfWeek(QCalendar cal) const
이 날짜의 요일(1 = 월요일~7 = 일요일)을 반환합니다.
달력이 제공된 경우 cal 을 사용하고, 그렇지 않으면 그레고리력을 사용합니다. 날짜가 유효하지 않으면 0을 반환합니다. 일부 달력은 7보다 큰 값에 특별한 의미(예: 중간 요일)를 부여할 수 있습니다.
day(), dayOfYear(), QCalendar::dayOfWeek() 및 Qt::DayOfWeek 를참조하세요 .
int QDate::dayOfWeek() const
과부하가 걸린 기능입니다.
int QDate::dayOfYear(QCalendar cal) const
이 날짜의 연도 일(첫 번째 날의 경우 1)을 반환합니다.
달력이 제공된 경우 cal 을 사용하고, 그렇지 않으면 그레고리력을 사용합니다. 날짜 또는 연도의 첫날이 유효하지 않은 경우 0을 반환합니다.
day(), dayOfWeek() 및 QCalendar::daysInYear()도 참조하세요 .
int QDate::dayOfYear() const
과부하가 걸린 기능입니다.
int QDate::daysInMonth(QCalendar cal) const
이 날짜의 월 일수를 반환합니다.
달력이 제공된 경우 cal 을 사용하고, 그렇지 않으면 그레고리력을 사용합니다(결과는 28~31일 범위입니다). 날짜가 유효하지 않으면 0을 반환합니다.
day(), daysInYear(), QCalendar::daysInMonth(), QCalendar::maximumDaysInMonth() 및 QCalendar::minimumDaysInMonth()도 참조하세요 .
int QDate::daysInMonth() const
과부하가 걸린 기능입니다.
int QDate::daysInYear(QCalendar cal) const
이 날짜의 연도 일수를 반환합니다.
달력이 제공된 경우 cal 을 사용하고, 그렇지 않으면 그레고리력을 사용합니다(이 경우 결과는 365 또는 366). 날짜가 유효하지 않으면 0을 반환합니다.
day(), daysInMonth(), QCalendar::daysInYear() 및 QCalendar::maximumMonthsInYear()도 참조하세요 .
int QDate::daysInYear() const
과부하가 걸린 기능입니다.
qint64 QDate::daysTo(QDate d) const
이 날짜부터 d 까지의 일수를 반환합니다( d 이 이 날짜보다 이전인 경우 음수).
두 날짜 중 하나가 유효하지 않으면 0을 반환합니다.
예시:
QDate d1(1995, 5, 17); // May 17, 1995 QDate d2(1995, 5, 20); // May 20, 1995 d1.daysTo(d2); // returns 3 d2.daysTo(d1); // returns -3
addDays()도 참조하세요 .
QDateTime QDate::endOfDay(const QTimeZone &zone) const
하루가 끝나는 순간을 반환합니다.
하루가 끝나는 시점은 시간을 설명하는 방식에 따라 달라집니다. 서쪽 표준 시간대에 있는 경우 하루가 더 일찍 시작되고 끝나는 반면, 동쪽 표준 시간대에 있는 경우 하루가 더 늦게 시작되고 끝납니다. 사용할 시간 표현은 선택적 시간 zone 으로 지정할 수 있습니다. 기본 시간 표현은 시스템 현지 시간입니다.
일반적으로 하루의 끝은 자정 1밀리초 전인 24:00이지만 시간대 전환으로 인해 지정된 날짜가 그 순간을 건너뛰는 경우(예: 23:00에서 다음 시간으로 건너뛰는 DST 스프링 포워드) 실제 하루 중 가장 최근 시간이 반환됩니다. 이 문제는 시간 표현이 표준 시간대 또는 현지 시간인 경우에만 발생할 수 있습니다.
zone 의 timeSpec()이 Qt::OffsetFromUTC 또는 Qt::UTC 인 경우 시간 표현에는 전환이 없으므로 하루의 끝은 QTime(23, 59, 59, 999)입니다.
드물게 날짜가 완전히 건너뛴 경우(국제 날짜선의 동쪽 지역이 서쪽으로 전환되는 경우)에는 반환값이 유효하지 않습니다. zone 으로 잘못된 표준 시간대를 전달하면 QDateTime 으로 표시되는 범위 밖에서 끝나는 날짜와 마찬가지로 잘못된 결과가 생성됩니다.
startOfDay()도 참조하세요 .
[since 6.5]
QDateTime QDate::endOfDay() const
이 함수는 오버로드된 함수입니다.
이 함수는 Qt 6.5에 도입되었습니다.
[until 6.9]
QDateTime QDate::endOfDay(Qt::TimeSpec spec, int offsetSeconds = 0) const
이 함수는 버전 6.9에서 더 이상 사용되지 않을 예정입니다.
이 함수는 과부하가 걸린 함수입니다.
사용 endOfDay(const QTimeZone &) instead. Returns the end-moment of the day. When a day ends depends on a how time is described: each day starts and ends earlier for those with higher offsets from UTC and later for those with lower offsets from UTC. The time representation to use can be specified either by a \a spec and \a offsetSeconds (ignored unless \a spec is Qt::OffsetSeconds) or by a time zone. Usually, the end of the day is one millisecond before the midnight, 24:00: however, if a local time transition causes the given date to skip over that moment (e.g. a DST spring-forward skipping over 23:00 and the following hour), the actual latest time in the day is returned. When \a spec is Qt::OffsetFromUTC, \a offsetSeconds gives the implied zone's offset from UTC. As UTC and such zones have no transitions, the end of the day is QTime(23, 59, 59, 999) in these cases. In the rare case of a date that was entirely skipped (this happens when a zone east of the international date-line switches to being west of it), the return shall be invalid. Passing Qt::TimeZone as \a spec (instead of passing a QTimeZone) will also produce an invalid result, as shall dates that end outside the range representable by QDateTime.
[static constexpr]
QDate QDate::fromJulianDay(qint64 jd)
율리우스력을 jd 을 QDate 으로 변환합니다.
toJulianDay()도 참조하세요 .
[static constexpr noexcept, since 6.4]
QDate QDate::fromStdSysDays(const std::chrono::sys_days &days)
1970년 1월 1일(UNIX 시대) 이후 QDate days 을 반환합니다. days 이 음수이면 반환되는 날짜는 해당 에포크 이전이 됩니다.
참고: 이 함수는 C++20이 필요합니다.
이 함수는 Qt 6.4에 도입되었습니다.
toStdSysDays()도 참조하세요 .
[static]
QDate QDate::fromString(const QString &string, Qt::DateFormat format = Qt::TextDate)
주어진 format 을 사용하여 string 으로 표시되는 QDate 을 반환하거나 문자열을 파싱할 수 없는 경우 유효하지 않은 날짜를 반환합니다.
Qt::TextDate 참고: 영문 월 이름(예: 짧은 형식의 "Jan" 또는 긴 형식의 "January")만 인식됩니다.
toString() 및 QLocale::toDate()도 참조하세요 .
[static]
QDate QDate::fromString(const QString &string, const QString &format, int baseYear, QCalendar cal)
주어진 format 을 사용하여 string 으로 표시되는 QDate 을 반환하거나 문자열을 구문 분석할 수 없는 경우 잘못된 날짜를 반환합니다.
달력이 제공된 경우 cal 을 사용하고, 그렇지 않으면 그레고리력을 사용합니다. 아래 형식 설명의 값 범위는 후자에 대한 것이며, 다른 달력에서는 다를 수 있습니다.
다음 표현식을 형식에 사용할 수 있습니다:
표현식 | 출력 |
---|---|
d | 선행 0이 없는 숫자로서의 요일(1 ~ 31) |
dd | 선행 0이 있는 숫자로서의 요일(01~31) |
ddd | 축약된 요일 이름('월' ~ '일'). |
dddd | 긴 날짜 이름('월요일' ~ '일요일'). |
M | 선행 0이 없는 숫자로서의 월(1~12) |
MM | 선행 0이 포함된 숫자로서의 월(01~12) |
MMM | 축약된 월 이름('1월' ~ '12월'). |
MMMM | 긴 월 이름('1월' ~ '12월'). |
yy | 두 자리 숫자로 된 연도(00~99)입니다. |
yyyy | 네 자리 숫자로 된 연도(음수인 경우 선행 마이너스 기호를 더할 수 있음). |
참고: 요일 및 월 이름은 영어로 입력해야 합니다(C 로캘). 현지화된 월 및 일 이름을 인식하려면 QLocale::system().toDate()를 사용합니다.
다른 모든 입력 문자는 텍스트로 처리됩니다. 작은따옴표로 묶인 비어 있지 않은 문자 시퀀스도 (따옴표가 제거된) 텍스트로 취급되며 표현식으로 해석되지 않습니다. 예를 들어
형식이 충족되지 않으면 잘못된 QDate 이 반환됩니다. 선행 0이 예상되지 않는 표현식(d, M)은 욕심을 부리게 됩니다. 즉, 허용되는 값 범위를 벗어나 다른 섹션에 너무 적은 숫자가 남더라도 두 자리 숫자를 사용하게 됩니다. 예를 들어, 다음 형식 문자열은 1월 30일을 의미할 수 있지만 M이 두 자리를 차지하여 유효하지 않은 날짜가 됩니다:
형식으로 표시되지 않는 모든 필드의 경우 다음 기본값이 사용됩니다:
필드 | 기본값 |
---|---|
연도 | baseYear (또는 1900) |
월 | 1(1월) |
일 | 1 |
format 에서 연도의 마지막 두 자리만 지정하는 경우 baseYear 에서 시작하는 100년이 가장 먼저 고려되는 후보입니다. 6.7 이전에는 baseYear 매개변수가 없었으며 항상 1900이 사용되었습니다. 기본값은 baseYear 이며, 이때부터 1999년까지 연도를 선택합니다. 예를 들어 1976을 baseYear 으로 전달하면 1976년부터 2075년까지 연도가 선택됩니다. 형식에 월, 일(월) 및 요일이 포함되어 있는 경우 이러한 형식만으로도 세기를 나타낼 수 있습니다. 이러한 경우 baseYear 에 표시된 세기와 가장 가까운 세기에서 일치하는 날짜가 선택되며, 이전보다 이후를 선호합니다. 자세한 내용은 QCalendar::matchCenturyToWeekday() 및 Date ambiguities 을 참조하세요,
다음 예는 기본값을 보여줍니다:
QDate::fromString("1.30", "M.d"); // January 30 1900 QDate::fromString("20000110", "yyyyMMdd"); // January 10, 2000 QDate::fromString("20000110", "yyyyMd"); // January 10, 2000
참고: 포맷 문자를 사용하여 위 표에서 가장 긴 표현식보다 여러 번 반복되는 경우, 포맷의 이 부분은 구분 기호 없이 여러 표현식으로 읽히며, 위의 가장 긴 표현식은 복사본 수만큼 반복되어 더 짧은 표현식일 수 있는 잔류로 끝납니다. 따라서 'MMMMMMMMMM'
은 "MayMay05"
과 일치하고 월을 5월로 설정합니다. 마찬가지로 'MMMMMM'
는 "May08"
과 일치하지 않으므로 잘못된 날짜가 됩니다.
날짜 모호성
문화권마다 날짜에 서로 다른 형식을 사용하기 때문에 사용자가 날짜 필드를 입력하는 순서를 혼동할 수 있습니다. 예를 들어 "Wed 28-Nov-01"
은 2028년 11월 1일 또는 2001년 11월 28일(각각 수요일)을 의미할 수 있습니다. "ddd yy-MMM-dd"
형식을 사용하면 첫 번째 방식으로 해석되고 "ddd dd-MMM-yy"
형식을 사용하면 두 번째 방식으로 해석됩니다. 그러나 사용자가 의미하는 바는 코드가 예상한 형식이 아니라 사용자가 일반적으로 날짜를 쓰는 방식에 따라 달라질 수 있습니다.
위의 예에서는 월의 요일과 두 자리 숫자의 연도를 혼동했습니다. 월과 일이 모두 숫자로 주어질 때 월과 일을 서로 바꿀 때도 비슷한 혼란이 발생할 수 있습니다. 이러한 경우 날짜 형식에 요일 필드를 포함하면 중복성을 제공하여 이러한 종류의 오류를 잡는 데 도움이 될 수 있습니다. 그러나 위의 예에서와 같이 두 필드(또는 그 의미)를 서로 바꾸면 요일이 같은 날짜가 생성될 수 있으므로 항상 효과적인 것은 아닙니다.
형식에 요일을 포함하면 연도의 마지막 두 자리만 사용하여 지정된 날짜의 세기를 확인할 수도 있습니다. 안타깝게도 사용자(또는 다른 데이터 소스)가 두 필드를 혼동한 날짜와 결합하면 이 해결 방법을 사용하면 형식의 판독값과 일치하지만 작성자가 의도한 날짜가 아닌 날짜를 찾을 수 있습니다. 마찬가지로, 사용자가 단순히 요일을 잘못 입력한 경우 올바른 날짜가 다른 세기의 날짜로 이어질 수 있습니다. 각각의 경우에 다른 세기의 날짜를 찾으면 잘못 입력한 날짜가 완전히 다른 날짜로 바뀔 수 있습니다.
날짜의 모호함을 피하는 가장 좋은 방법은 이름으로 지정된 4자리 연도와 월(전체 또는 축약)을 사용하는 것이며, 사용자 인터페이스 관용구를 통해 사용자가 선택하는 날짜의 어느 부분을 명확히 알 수 있도록 하는 것이 가장 이상적입니다. 요일을 포함하면 데이터의 일관성을 확인할 수 있는 수단을 제공함으로써 도움이 될 수 있습니다. 사용자가 선택한 로캘에서 제공하는 형식을 사용하여 데이터를 가져오는 경우, 짧은 형식은 두 자리 연도를 사용할 가능성이 높으므로 긴 형식을 사용하는 것이 가장 좋습니다. 물론 형식을 항상 제어할 수 있는 것은 아니며, 예를 들어 사용자가 제어하지 않는 소스에서 데이터를 가져올 수도 있습니다.
특히 명확한 형식이 사용되고 있는지 확인할 수 없는 경우, 이러한 혼란의 원인이 될 수 있으므로 문자열을 날짜로 읽은 결과가 유효할 뿐만 아니라 제공된 목적에 합당한지 확인하는 것이 중요합니다. 결과가 합리적인 값의 범위를 벗어나는 경우 사용자가 오류를 쉽게 인식할 수 있도록 문자열에서 읽은 날짜를 월 이름과 4자리 연도를 포함하는 긴 형식으로 표시하여 사용자가 선택한 날짜를 확인하도록 하는 것이 좋습니다.
toString(), QDateTime::fromString(), QTime::fromString() 및 QLocale::toDate()도 참조하세요 .
[static, since 6.0]
QDate QDate::fromString(QStringView string, Qt::DateFormat format = Qt::TextDate)
이 함수는 오버로드된 함수입니다.
이 함수는 Qt 6.0에 도입되었습니다.
[static, since 6.0]
QDate QDate::fromString(QStringView string, QStringView format, QCalendar cal)
이 함수는 오버로드된 함수입니다.
이 함수는 Qt 6.0에 도입되었습니다.
[static, since 6.7]
QDate QDate::fromString(QStringView string, QStringView format, int baseYear = QLocale::DefaultTwoDigitBaseYear)
이 함수는 과부하된 함수입니다.
기본적으로 구성된 QCalendar 을 사용합니다.
이 함수는 Qt 6.7에 도입되었습니다.
[static, since 6.0]
QDate QDate::fromString(const QString &string, QStringView format, QCalendar cal)
이 함수는 오버로드된 함수입니다.
이 함수는 Qt 6.0에 도입되었습니다.
[static, since 6.7]
QDate QDate::fromString(const QString &string, QStringView format, int baseYear = QLocale::DefaultTwoDigitBaseYear)
이 함수는 과부하된 함수입니다.
기본적으로 구성된 QCalendar 을 사용합니다.
이 함수는 Qt 6.7에 도입되었습니다.
[static]
QDate QDate::fromString(const QString &string, const QString &format, QCalendar cal)
과부하가 걸린 기능입니다.
[static, since 6.7]
QDate QDate::fromString(const QString &string, const QString &format, int baseYear = QLocale::DefaultTwoDigitBaseYear)
이 함수는 과부하된 함수입니다.
기본적으로 구성된 QCalendar 을 사용합니다.
이 함수는 Qt 6.7에 도입되었습니다.
[static, since 6.7]
QDate QDate::fromString(QStringView string, QStringView format, int baseYear, QCalendar cal)
이 함수는 오버로드된 함수입니다.
이 함수는 Qt 6.7에 도입되었습니다.
[static, since 6.0]
QDate QDate::fromString(const QString &string, QStringView format, int baseYear, QCalendar cal)
이 함수는 오버로드된 함수입니다.
이 함수는 Qt 6.0에 도입되었습니다.
void QDate::getDate(int *year, int *month, int *day) const
날짜의 연도, 월, 일을 추출하여 *year, *month, *day 에 할당합니다. 포인터는 널일 수 있습니다.
날짜가 유효하지 않으면 0을 반환합니다.
참고: 5.7 이전 Qt 버전에서는 이 함수가 비const
로 표시됩니다.
year(), month(), day(), isValid() 및 QCalendar::partsFromDate()도 참조하세요 .
[static]
bool QDate::isLeapYear(int year)
지정된 year 이 그레고리력의 윤년인 경우 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
QCalendar::isLeapYear()도 참조하세요 .
[constexpr]
bool QDate::isNull() const
날짜가 null이면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다. null 날짜는 유효하지 않습니다.
참고: 이 함수의 동작은 isValid()와 동일합니다.
isValid()도 참조하세요 .
[constexpr]
bool QDate::isValid() const
이 날짜가 유효하면 true
를 반환하고, 그렇지 않으면 false
을 반환합니다.
isNull() 및 QCalendar::isDateValid()도 참조하세요 .
[static]
bool QDate::isValid(int year, int month, int day)
이 함수는 오버로드된 함수입니다.
지정된 날짜(year, month, day)가 그레고리력에서 유효한 경우 true
를 반환하고, 그렇지 않으면 false
를 반환합니다.
예시:
QDate::isValid(2002, 5, 17); // true QDate::isValid(2002, 2, 30); // false (Feb 30 does not exist) QDate::isValid(2004, 2, 29); // true (2004 is a leap year) QDate::isValid(2000, 2, 29); // true (2000 is a leap year) QDate::isValid(2006, 2, 29); // false (2006 is not a leap year) QDate::isValid(2100, 2, 29); // false (2100 is not a leap year) QDate::isValid(1202, 6, 6); // true (even though 1202 is pre-Gregorian)
isNull(), setDate() 및 QCalendar::isDateValid()도 참조하세요 .
int QDate::month(QCalendar cal) const
날짜의 월 번호를 반환합니다.
첫 번째는 1로 시작하는 연도의 월 번호를 반환합니다. 달력이 제공된 경우 cal 을 사용하고, 그렇지 않으면 그레고리력을 사용하며, 이 경우 월 번호는 다음과 같습니다:
- 1 = "1월"
- 2 = "2월"
- 3 = "3월"
- 4 = "4월"
- 5 = "5월"
- 6 = "6월"
- 7 = "7월"
- 8 = "8월"
- 9 = "9월"
- 10 = "10월"
- 11 = "11월"
- 12 = "12월"
날짜가 유효하지 않으면 0을 반환합니다. 일부 캘린더는 일부 연도에 12개월을 초과할 수 있습니다.
year(), day() 및 QCalendar::partsFromDate()도 참조하세요 .
int QDate::month() const
과부하가 걸린 기능입니다.
bool QDate::setDate(int year, int month, int day)
주어진 year, month 및 day 숫자를 사용하여 그레고리력으로 날짜를 표시하도록 설정합니다. 결과 날짜가 유효하면 참을 반환하고, 그렇지 않으면 유효하지 않은 날짜를 나타내도록 설정하고 거짓을 반환합니다.
isValid() 및 QCalendar::dateFromParts()도 참조하세요 .
bool QDate::setDate(int year, int month, int day, QCalendar cal)
주어진 달력 cal 에서 주어진 year, month 및 day 숫자를 사용하여 날짜를 표시하도록 설정합니다. 결과 날짜가 유효하면 참을 반환하고, 그렇지 않으면 유효하지 않은 날짜를 나타내도록 설정하고 거짓을 반환합니다.
isValid() 및 QCalendar::dateFromParts()도 참조하세요 .
QDateTime QDate::startOfDay(const QTimeZone &zone) const
하루의 시작 순간을 반환합니다.
하루가 시작되는 시점은 시간을 설명하는 방식에 따라 달라집니다. 서쪽 표준 시간대에 있는 경우에는 하루가 더 일찍 시작되고 종료되며, 동쪽 표준 시간대에 있는 경우에는 하루가 더 늦게 시작되고 종료됩니다. 사용할 시간 표현은 선택적 시간 zone 으로 지정할 수 있습니다. 기본 시간 표현은 시스템 현지 시간입니다.
일반적으로 하루의 시작은 자정인 00:00이지만 시간대 전환으로 인해 지정된 날짜가 자정을 건너뛰는 경우(예: 하루의 첫 시간을 건너뛰는 DST 스프링 포워드) 실제 하루 중 가장 빠른 시간이 반환됩니다. 이 문제는 시간 표현이 표준 시간대 또는 현지 시간인 경우에만 발생할 수 있습니다.
zone 의 timeSpec()이 Qt::OffsetFromUTC 또는 Qt::UTC 인 경우 시간 표현에는 전환이 없으므로 하루의 시작은 QTime(0, 0)이 됩니다.
드물지만 날짜가 완전히 건너뛴 경우(국제 날짜선의 동쪽 지역이 서쪽 지역으로 전환되는 경우)에는 반환값이 유효하지 않습니다. zone 과 같이 잘못된 표준 시간대를 전달하면 QDateTime 으로 표시되는 범위 밖에서 시작하는 날짜와 마찬가지로 잘못된 결과가 생성됩니다.
endOfDay()도 참조하세요 .
[since 6.5]
QDateTime QDate::startOfDay() const
이 함수는 오버로드된 함수입니다.
이 함수는 Qt 6.5에 도입되었습니다.
[until 6.9]
QDateTime QDate::startOfDay(Qt::TimeSpec spec, int offsetSeconds = 0) const
이 함수는 버전 6.9에서 더 이상 사용되지 않을 예정입니다.
이 함수는 과부하가 걸린 함수입니다.
대신 startOfDay(const QTimeZone &)
을 사용하세요.
하루의 시작 순간을 반환합니다.
하루가 시작되는 시점은 시간 표현 방식에 따라 달라집니다. UTC에서 오프셋이 큰 경우에는 하루가 더 일찍 시작되고 UTC에서 오프셋이 작은 경우에는 하루가 더 늦게 시작되고 끝납니다. 사용할 시간 표현은 spec 및 offsetSeconds ( spec 가 Qt::OffsetSeconds가 아닌 경우 무시됨) 또는 시간대로 지정할 수 있습니다.
일반적으로 하루의 시작은 자정인 00:00이지만, 현지 시간 전환으로 인해 지정된 날짜가 자정을 건너뛰는 경우(예: 하루의 첫 시간을 건너뛰는 DST 스프링 포워드) 실제 하루 중 가장 빠른 시간이 반환됩니다.
spec 가 Qt::OffsetFromUTC 인 경우 offsetSeconds 는 UTC로부터 암시된 시간대의 오프셋을 제공합니다. UTC와 이러한 시간대에는 전환이 없으므로 이러한 경우 하루의 시작은 QTime(0, 0)입니다.
드물게 날짜가 완전히 건너뛴 경우(국제 날짜선의 동쪽 지역이 서쪽 지역으로 전환되는 경우)에는 반환값이 유효하지 않습니다. Qt::TimeZone 을 spec 으로 전달( QTimeZone 을 전달하는 대신)하는 경우에도 유효하지 않은 결과가 생성되며, QDateTime 으로 표현할 수 있는 범위 밖에서 시작하는 날짜도 마찬가지입니다.
[constexpr]
qint64 QDate::toJulianDay() const
날짜를 율리우스력 일로 변환합니다.
fromJulianDay()도 참조하세요 .
[constexpr noexcept]
std::chrono::sys_days QDate::toStdSysDays() const
1970년 1월 1일(UNIX 시대)과 이 날짜 사이의 일 수를 std::chrono::sys_days
개체로 표시된 값으로 반환합니다. 이 날짜가 에포크 이전인 경우 일 수는 음수가 됩니다.
참고: 이 함수는 C++20이 필요합니다.
fromStdSysDays() 및 daysTo()도 참조하세요 .
QString QDate::toString(QStringView format) const
과부하가 걸린 기능입니다.
QString QDate::toString(Qt::DateFormat format = Qt::TextDate) const
이 함수는 오버로드된 함수입니다.
날짜를 문자열로 반환합니다. format 매개 변수는 문자열의 형식을 결정합니다.
format 가 Qt::TextDate 인 경우 문자열의 형식은 기본값으로 지정됩니다. 일 및 월 이름은 영어로 표시됩니다. 이 서식의 예는 "1995년 5월 20일 토요일"입니다. 현지화된 서식은 QLocale::toString()를 참조하십시오.
format 이 Qt::ISODate 인 경우 문자열 형식은 날짜 및 시간 표현에 대한 ISO 8601 확장 사양에 해당하며, 여기서 yyyy는 연도, MM은 해당 연도의 월(01~12 사이), dd는 01~31 사이의 월 요일 형식입니다.
format 이 Qt::RFC2822Date 인 경우 문자열은 RFC 2822와 호환되는 방식으로 형식이 지정됩니다. 이 형식의 예는 "1995년 5월 20일"입니다.
날짜가 유효하지 않으면 빈 문자열이 반환됩니다.
경고: Qt::ISODate 형식은 0~9999 범위의 연도에만 유효합니다.
fromString() 및 QLocale::toString()도 참조하세요 .
QString QDate::toString(const QString &format) const
과부하가 걸린 기능입니다.
int QDate::weekNumber(int *yearNumber = nullptr) const
ISO 8601 주 번호(1~53)를 반환합니다.
날짜가 유효하지 않으면 0을 반환합니다. 그렇지 않으면 날짜의 주 번호를 반환합니다. yearNumber 가 nullptr
(기본값)이 아닌 경우 연도를 *yearNumber 로 저장합니다.
ISO 8601에 따라 각 주는 그레고리력에서 대부분의 날이 속한 연도에 속합니다. ISO 8601의 한 주는 월요일에 시작하므로 목요일이 속한 연도에 해당합니다. 대부분의 연도는 52주이지만 일부 연도는 53주입니다.
참고: *yearNumber 는 year()와 항상 같은 것은 아닙니다. 예를 들어 2000년 1월 1일은 1999년의 52번째 주이고 2002년 12월 31일은 2003년의 1번째 주입니다.
isValid()도 참조하세요 .
int QDate::year(QCalendar cal) const
이 날짜의 연도를 반환합니다.
달력이 제공된 경우 cal 을 사용하고, 그렇지 않으면 그레고리력을 사용합니다.
날짜가 유효하지 않으면 0을 반환합니다. 일부 달력의 경우 첫해 이전의 날짜가 모두 유효하지 않을 수 있습니다.
연도가 0인 달력을 사용하는 경우 isValid()를 사용하여 반환값이 0인지 확인합니다. 이러한 달력은 연도 1 앞에 연도 0이 오고, 그 앞에 연도 -1이 오는 식으로 음수 연도를 사용합니다.
일부 달력에서는 0년도가 없더라도 첫 해 이전의 연도를 1부터 거꾸로 세는 전통적인 연도 번호를 사용합니다. 예를 들어, 서력 그레고리력에서는 기원전 1년(첫 해) 이전의 연속된 연도를 기원전 1, 기원전 2, 기원전 3 등으로 표시합니다. 이러한 달력에서는 음수 연도를 사용하여 1년 이전의 연도를 표시하며, -1은 1년 이전의 연도를 나타냅니다.
month(), day(), QCalendar::hasYearZero(), QCalendar::isProleptic() 및 QCalendar::partsFromDate()도 참조하세요 .
int QDate::year() const
과부하가 걸린 기능입니다.
관련 비회원
[constexpr noexcept]
bool operator!=(const QDate &lhs, const QDate &rhs)
lhs 과 rhs 이 서로 다른 날짜를 나타내는 경우 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
operator==()도 참조하세요 .
[constexpr noexcept]
bool operator<(const QDate &lhs, const QDate &rhs)
lhs 이 rhs 보다 빠르면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
QDataStream &operator<<(QDataStream &out, QDate date)
out 을 스트리밍하기 위해 date 을 씁니다.
Qt 데이터 유형 직렬화도참조하십시오 .
[constexpr noexcept]
bool operator<=(const QDate &lhs, const QDate &rhs)
lhs 이 rhs 보다 작거나 같으면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
[constexpr noexcept]
bool operator==(const QDate &lhs, const QDate &rhs)
lhs 과 rhs 이 같은 날을 나타내는 경우 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
[constexpr noexcept]
bool operator>(const QDate &lhs, const QDate &rhs)
lhs 이 rhs 보다 늦으면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
[constexpr noexcept]
bool operator>=(const QDate &lhs, const QDate &rhs)
lhs 이 rhs 보다 늦거나 같으면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
QDataStream &operator>>(QDataStream &in, QDate &date)
in 스트림에서 date 로 날짜를 읽습니다.
Qt 데이터 유형 직렬화도참조하십시오 .
© 2025 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.