JavaScript Date 객체
QML Date 객체는 로케일을 지원하는 함수를 통해 JS Date 객체를 확장합니다.
format 인자를 받는 함수는 Locale.LongFormat, Locale.ShortFormat, Locale.NarrowFormat 열거형 값이나 형식을 지정하는 문자열을 받아들입니다.
지원되는 형식 문자열의 형식은 QDate::toString(), QTime::toString() 및 QDateTime::toString() 문서에 설명된 것과 같습니다.
날짜가 유효하지 않은 경우, 빈 문자열이 반환됩니다.
포맷 열거형 값
로캘 기본 설정에 맞는 형식을 원할 때는 열거형 값을 사용하십시오.
| Locale.LongFormat | 긴 형식 |
| Locale.ShortFormat | 짧은 형식 |
| Locale.NarrowFormat | 이 맥락에서는 Locale.ShortFormat과 동일합니다 |
열거형이 나타내는 형식은 로케일뿐만 아니라 해당 열거형이 사용되는 메서드에 따라 달라집니다.
예를 들어, ' en_US ' 로케일의 경우 다음과 같은 형식 문자열이 사용됩니다:
| 함수 | 로케일 열거형 | 서식 문자열 |
|---|---|---|
| fromLocaleDateString, toLocaleDateString | Locale.LongFormat | dddd, MMMM d, yyyy |
| fromLocaleDateString, toLocaleDateString | Locale.ShortFormat | M/d/yy |
| fromLocaleTimeString, toLocaleTimeString | Locale.LongFormat | h:mm:ss AP t |
| fromLocaleTimeString, toLocaleTimeString | Locale.ShortFormat | h:mm AP |
| fromLocaleString, toLocaleString | Locale.LongFormat | dddd, MMMM d, yyyy h:mm:ss AP t |
| fromLocaleString, toLocaleString | Locale.ShortFormat | M/d/yy h:mm AP |
추가 참고 사항
로케일 인식 함수를 사용하여 날짜 또는 시간 서식을 지정하면, Qt와 JS 간의 사양 불일치로 인해 시간이 잘못 서식 지정될 수 있습니다. ECMA-262는 과거 날짜를 해석할 때 현재 일광 절약 시간제 규칙을 과거 연도에 적용해야 한다고 명시하고 있는 반면, Qt는 (사용 가능한 경우) 과거 데이터를 사용하여 특정 날짜에 일광 절약 시간제가 시행되었는지 여부를 판단합니다. 따라서 JS에서 Date 값을 생성하고 로케일 인식 함수를 사용하여 문자열로 변환할 경우, 지정된 시간에는 일광 절약 시간제가 시행되지 않았으나 현재 시행 중인 경우, 또는 그 반대의 경우, 결과가 1시간 정도 부정확하게 나올 수 있습니다.
음수에 대한 해석이 서로 다른 다양한 날짜 형식이 존재합니다. 일반적인 언어에서는 서기 0년이 존재하지 않습니다. 기원전 1년 다음 해는 서기 1년입니다. 이러한 이해 방식은 ECMAScript에서 표준화되지 않은 형식(toString(), toLocaleString(), toUTCString() 등)으로 날짜를 출력하거나 구문 분석할 때 반영됩니다. ECMAScript는 ISO 8601이라는 하나의 형식을 표준화합니다. 이는 toISOString()을 호출할 때 반환되는 형식입니다. 이 형식에는 0년이 포함되는데, 이는 다른 형식에서 기원전 1년에 해당합니다. 따라서 toISOString()과 toString()을 사용하여 음수 날짜를 출력할 때 서로 다른 연도가 반환됩니다.
Date 생성자나 set(UTC)FullYear()를 사용하여 연도를 설정할 때는 ISO 8601에서 정한 규칙이 적용되며, 0은 유효한 연도로 간주됩니다. 즉, 생성자나 set(UTC)FullYear()로 설정된 음수 연도는 0을 기준으로 하므로, toString() 및 관련 메서드로 출력된 값과는 1년 차이가 납니다. to*String() 메서드 중 하나의 출력을 파싱하면 출력된 것과 동일한 날짜 값을 얻게 됩니다. Date.parse()는 다양한 형식과 0년의 존재 여부에 대한 각 형식의 규칙을 인식합니다.
이 모든 내용은 다른 자바스크립트 구현체에서 얻는 결과와는 다르다는 점에 유의하십시오. 다른 구현체들은 일반적으로 모든 문자열 표현에서 연도 0을 유효한 것으로 취급합니다. 하지만 ECMAScript 표준에서 날짜 형식은 “구현에 따라 달라질 수” 있으므로, 이는 여전히 유효한 방식입니다.
string Date::toLocaleString(locale, format)
Date 객체를 지정된 locale 에 적합하고 지정된 format 에 맞는 날짜와 시간을 포함하는 문자열로 변환합니다.
format 이 지정되지 않은 경우, Locale.LongFormat 가 사용됩니다.
locale 이 지정되지 않은 경우 기본 로케일이 사용됩니다.
다음 예제는 독일 로케일에 맞게 형식이 지정된 현재 날짜와 시간을 보여줍니다:
string Date::toLocaleDateString(locale, format)
Date 객체를 지정된 format 내에서 지정된 locale 에 적합한 날짜 형식을 포함하는 문자열로 변환합니다.
format 가 지정되지 않은 경우, Locale.LongFormat 가 사용됩니다.
locale 이 지정되지 않은 경우 기본 로케일이 사용됩니다.
다음 예제는 독일 로케일에 맞게 형식이 지정된 현재 날짜를 보여줍니다:
import QtQuick 2.0
Text {
text: "The date is: " + new Date().toLocaleDateString(Qt.locale("de_DE"))
}string Date::toLocaleTimeString(locale, format)
Date 객체를 지정된 format 내에서 지정된 locale 에 적합한 시간 형식을 포함하는 문자열로 변환합니다.
format 가 지정되지 않은 경우, Locale.LongFormat 가 사용됩니다.
locale 이 지정되지 않은 경우 기본 로케일이 사용됩니다.
다음 예제는 독일 로케일에 맞춰 형식이 지정된 현재 시간을 보여줍니다:
import QtQuick 2.0
Text {
text: "The date is: " + new Date().toLocaleTimeString(Qt.locale("de_DE"))
}string Date::fromLocaleString(locale, dateTimeString, format)
dateTimeString 형식의 날짜/시간 문자열을 locale 및 format 을 사용하여 Date 객체로 변환합니다.
format 가 지정되지 않은 경우 Locale.LongFormat 가 사용됩니다.
locale 가 지정되지 않은 경우 기본 로캘이 사용됩니다.
다음 예제는 기본 로케일을 사용하여 특정 형식의 날짜/시간 문자열에서 날짜/시간을 구문 분석하는 방법을 보여줍니다:
import QtQml 2.0
QtObject {
property var locale: Qt.locale()
property string dateTimeString: "Tue 2013-09-17 10:56:06"
Component.onCompleted: {
print(Date.fromLocaleString(locale, dateTimeString, "ddd yyyy-MM-dd hh:mm:ss"));
}
}string Date::fromLocaleDateString(locale, dateString, format)
dateString 을 locale 및 format 을 사용하여 Date 객체로 변환합니다.
format 이 지정되지 않은 경우 Locale.LongFormat 이 사용됩니다.
locale 가 지정되지 않은 경우 기본 로캘이 사용됩니다.
다음 예제는 현재 날짜를 먼저 기본 로케일과 형식을 사용하여 날짜 문자열로 포맷팅한 다음, 동일한 방식으로 다시 파싱하는 과정을 보여줍니다:
import QtQml 2.0
QtObject {
property var locale: Qt.locale()
property date currentDate: new Date()
property string dateString
Component.onCompleted: {
dateString = currentDate.toLocaleDateString();
print(Date.fromLocaleDateString(dateString));
}
}string Date::fromLocaleTimeString(locale, timeString, format)
timeString 시간 문자열을 locale 및 format 을 사용하여 Date 객체로 변환합니다.
format 이 지정되지 않은 경우, Locale.LongFormat 이 사용됩니다.
locale 가 지정되지 않은 경우 기본 로케일이 사용됩니다.
다음 예제는 현재 시간을 먼저 기본 로케일과 짧은 형식을 사용하여 시간 문자열로 포맷한 다음, 동일한 방식으로 다시 파싱하는 과정을 보여줍니다:
import QtQml 2.2
QtObject {
property var locale: Qt.locale()
property date currentTime: new Date()
property string timeString
Component.onCompleted: {
timeString = currentTime.toLocaleTimeString(locale, Locale.ShortFormat);
print(Date.fromLocaleTimeString(locale, timeString, Locale.ShortFormat));
}
}string Date::timeZoneUpdated()
JS 엔진에 시스템의 시간대가 변경되었음을 알리며, 이는 날짜 및 시간 데이터를 올바르게 처리하기 위해 필요합니다.
JS는 Date 객체를 UTC 시간으로 저장하며, 현지 시간으로 Date 구성 요소에 대한 모든 액세스 및 반환에는 UTC로부터의 현재 오프셋이 적용됩니다. 시간대 업데이트로 인해 현재 오프셋이 변경되면, JS 엔진이 오프셋을 재계산할 수 있도록 이를 알릴 필요가 있습니다.
이 함수는 시스템의 시간대가 업데이트된 후에 호출되어야 합니다.
예를 들어, 시간대를 변경하는 애플리케이션은 새로운 시간대를 설정한 후 timeZoneUpdated()를 호출합니다:
property string selectedTimeZone
onSelectedTimeZoneChanged: {
MyFunctions.setSystemTimeZone(selectedTimeZone)
Date.timeZoneUpdated()
}Locale도 참조하십시오 .
© 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.