날짜와 시간 활용하기

# 학습 과정 소개

날짜와 시간을 표현하는 DateTime에 대해 알아보고, 활용할 수 있는 다양한 서식 지정자를 알아봅시다.

# DateTime 알아보기

DateTime은 날짜와 시간으로 표시된 시간을 나타내는 객체입니다. 값 형식은 그레고리력에서 00:00:00(자정), 서기 0001년 1월 1일부터 9999년 12월 31일 오후 11:59:59까지의 값으로 날짜와 시간을 나타냅니다. DateTime은 맵에 입장한 시간이나, 계정이 생성된 날처럼 특정 날짜를 나타내기 위해 사용합니다. DateTime은 활용할 때 주로 시간 값이 필요하기 때문에 TimeSpan과 함께 사용하는 경우가 많습니다.

# DateTime 상수

DateTime의 상수는 값을 따로 할당할 필요 없이 `DateTime.UtcNow`처럼 사용할 수 있습니다.

[{"상수":"UtcNow","설명":"현재 날짜와 시간을 UTC로 가져옵니다."},{"상수":"MaxValue","설명":"DateTime의 최댓값입니다."},{"상수":"MinValue","설명":"DateTime의 최솟값입니다."}]

# DateTime 생성자

생성자는 보통 큰 시간에서 작은 시간으로 입력하고, 생성자에 따라 문화권을 구분하기도 합니다.

[{"생성자":"DateTime(int elapsed)","설명":"밀리초 단위의 정수를 UTC로 객체를 초기화합니다."},{"생성자":"DateTime(int year, int month, int day, int hour, int minute, int second)","설명":"연도, 월, 일, 시간, 분, 초를 UTC로 객체를 초기화합니다."},{"생성자":"DateTime(int year, int month, int day, int hour, int minute, int second, int millisecond)","설명":"연도, 월, 일, 시간, 분, 초, 밀리초를 UTC로 객체를 초기화합니다."},{"생성자":"DateTime(string dateTimeString)","설명":"문자열로 객체를 초기화합니다."},{"생성자":"DateTime(string dateTimeString, string format)","설명":"문자열로 객체를 초기화합니다.dateTimeString는 format과 정확하게 일치해야 합니다. format은 표준 날짜 및 시간 서식 지정자 및 사용자 지정 날짜 및 시간 서식 지정자를 포함하는 문자열입니다."},{"생성자":"DateTime(string dateTimeString, string format, string cultureName)","설명":"문자열로 객체를 초기화합니다. dateTimeString는 반드시 format과 정확하게 일치해야 하고, format은 표준 날짜 및 시간 서식 지정자 및 사용자 지정 날짜 및 시간 서식 지정자를 포함하는 문자열입니다.cultureName은 format에 포함된 서식 지정자에 대한 문화권별 정보를 제공합니다. cultureName은 BCP-47의 표준을 따릅니다."}]

# DateTime 프로퍼티

[{"프로퍼티":"Elapsed","설명":"밀리초 단위의 정수"},{"프로퍼티":"Day","설명":"일"},{"프로퍼티":"Month","설명":"월"},{"프로퍼티":"Year","설명":"연도"},{"프로퍼티":"Millisecond","설명":"밀리초"},{"프로퍼티":"Second","설명":"초"},{"프로퍼티":"Minute","설명":"분"},{"프로퍼티":"Hour","설명":"시간"}]

# 활용 예시

#### DateTime 저장, 불러오기

DateTime을 정수 타입인 Elapsed로 변환하여 DataStorage에 저장하거나 Elapsed를 불러와서 DateTime을 복구하는 예제입니다.
    
    
    @Component
    script DateTimeStorage extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local originDate =  DateTime(2022, 5, 17, 13, 21, 35)
            local elapsed = originDate.Elapsed
            
            local dataStorage = _DataStorageService:GetGlobalDataStorage ("dsName")
            dataStorage:SetAndWait("date", tostring(elapsed))
            
            local errorCode, dateFromDataStorage = dataStorage:GetAndWait("date")
            local convertedDate = DateTime(tonumber(dateFromDataStorage))
            
            log(convertedDate)
        end
    end
    

#### 다른 실행 공간으로 DateTime 보내기

DataTime을 DateElapsed를 사용해 다른 실행 공간에서 DateTime을 활용할 수 있습니다.
    
    
    @Component
    script DateTimeTransfer extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
        wait(1)
        local date = DateTime(2022, 5, 17, 13, 21, 35)
        self:ServerToClient(date.Elapsed)
        end
    
        @ExecSpace("ClientOnly")
        method void ServerToClient(number dateElapsed)
        local date = DateTime(dateElapsed)
        log(date)
        end
    end
    

#### DateTime을 Local Time으로 변환

DateTime은 기본적으로 UTC 기준으로 설정됩니다. 이를 로컬 시간으로 변환하려면 실행 제어를 통해 Client 공간으로 이동시킨 후 UtilLogic의 GetLocalTimeForm 메서드로 로컬 시간으로 변환할 수 있습니다.
    
    
    @Component
    script ServerTimeLocalizer extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
        wait(1)
        local date = DateTime(2022, 5, 17, 13, 21, 35)
        self:ServerToClient(date.Elapsed)
        end
    
        @ExecSpace("ClientOnly")
        method void ServerToClient(number dateElapsed)
        local date = DateTime(dateElapsed)
        local localTime = _UtilLogic:GetLocalTimeFrom(date)
        log(localTime)
        end
    end
    

#### DateTime에 서식 지정하기

다양한 서식 지정자를 활용해 크리에이터가 원하는 서식을 지정해 사용할 수 있습니다.
    
    
    @Component
    script DateTimeFormatter extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 5, 17, 13, 21, 35)
            local dateString = date:ToFormattedString("'연도는 'yyyy ")
            log(dateString) -- 연도는 2022
        end
    end
    

# 문자열을 사용한 생성 형식

문자열을 통해 DateTime객체를 생성할 때 다음과 같은 형식을 사용할 수 있습니다. 아래의 다양한 형식처럼 특정 구성 요소만 조합해 사용하고, 다른 구성 요소가 없는 경우에는 특정 시간, 날짜, 일, 연도를 기준으로 하거나, 현재를 기준으로 가정합니다.

#### 날짜와 시간

날짜와 시간을 모두 사용하는 구성 요소입니다.
    
    
    @Component
    script DateTimeLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local dateAsString = "08/18/2022 07:22:16" 
            local date = DateTime(dateAsString)
            log(date) -- 08/18/2022 07:22:16
        end
    end
    

#### 날짜

날짜만 있는 구성 요소입니다. 시간 구성 요소가 없는 경우에 시간은 00:00:00으로 가정합니다.
    
    
    @Component
    script DateTimeLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local dateAsString = "08/18/2022" 
            local date = DateTime(dateAsString)
            log(date) -- 08/18/2022 00:00:00
        end
    end
    

#### 월과 연도

월과 연도만 있는 구성 요소입니다. 일을 사용하지 않는 경우에 일 구성 요소는 월의 첫 번째 날로 가정합니다.
    
    
    @Component
    script DateConversionLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local dateAsString = "8/2022" 
            local date = DateTime(dateAsString)
            log(date) -- 08/18/2022 00:00:00
        end
    end
    

#### 월과 일

월과 일만 있는 구성 요소를 사용합니다. 연도는 사용하지 않는 경우에 연도 구성 요소는 현재 연도로 가정합니다.
    
    
    @Component
    script DateTimeLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local dateAsString = "8/18" 
            local date = DateTime(dateAsString)
            log(date) -- 08/18/2022 00:00:00
        end
    end
    

### 시간

시간만 있고 날짜 구성 요소가 없는 문자열의 경우 날짜 구성 요소는 현재 날짜로 가정합니다.
    
    
    @Component
    script DateTimeLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local dateAsString = "07:22:16" 
            local date = DateTime(dateAsString)
            log(date) -- 5/9/2022 07:22:16
        end
    end
    

#### 시간과 오전/오후

시간과 오전/오후(AM/PM) 지정자만 있고 날짜 구성 요소가 없는 문자열의 경우 날짜 구성 요소는 현재 날짜를, 시간(분, 초)은 00:00을 가정합니다.
    
    
    @Component
    script DateTimeStringParser extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local dateAsString = "7 PM" 
            local date = DateTime(dateAsString)
            log(date) -- 05/09/2022 19:00:00
        end
    end
    

#### ISO 8601 문자열

표준 시간대 정보를 포함하고, ISO 8601을 준수하는 문자열을 사용하는 경우에 DateTime은 기본적으로 UTC로 저장됩니다. 그러므로 UTC로 지정할 경우 시간 값은 유지됩니다.

  * 예시: "2022-11-01T19:35:00.000Z"


    
    
    
    
    
    @Component
    script SampleDateLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local dateAsString = "2022-08-18T07:22:16.000Z"
            local date = DateTime(dateAsString)
            log(date) -- 08/18/2022 07:22:16
        end
    end
    

표준 시간대 오프셋 정보를 지정할 경우 오프셋만큼 변경된 UTC 값으로 저장됩니다.

  * 예시: "2022-11-01T19:35:00.000-07:00"


    
    
    @Component
    script DateTimeDisplay extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local dateAsString = "2022-08-18T07:22:16.000-07:00" 
            local date = DateTime(dateAsString)
            log(date) -- 08/18/2022 14:22:16
        end
    end
    

#### RFC 1123 시간 형식 문자열

RFC 1123 시간 형식을 준수하는 문자열을 사용할 수 있습니다. 이때 GMT 지정자를 포함해야 합니다.
    
    
    @Component
    script DateTimeDisplay extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local dateAsString = "Thu, 18 Aug 2022 07:22:16 GMT" 
            local date = DateTime(dateAsString)
            log(date) -- 08/18/2022 07:22:16
        end
    end
    

#### 표준 시간대 오프셋 정보

표준 날짜 및 시간 서식 문자열은 단일 문자를 서식 지정자로 사용하여 DateTime 값의 문자열 표현을 정의합니다. 공백을 포함하여 문자를 둘 이상 포함하는 날짜 및 시간 서식은 사용자 지정 날짜 및 시간 서식 문자열로 해석됩니다.
    
    
    @Component
    script DateTimeOffsetConverter extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local dateAsString = "08/18/2022 07:22:16 -5:00" 
            local date = DateTime(dateAsString)
            log(date) -- 08/18/2022 12:22:16
        end
    end
    

# 표준 날짜, 시간 서식 지정자

단일 문자를 서식 지정자로 사용해 표준 날짜와 시간의 서식을 DateTime 값의 문자열로 정의하고 사용합니다. 공백을 포함한 두 문자 이상의 날짜 및 시간 서식은 사용자 지정 날짜 및 시간 서식 지정자로 해석되므로 사용 시 공백 유무를 유의해야 합니다.

#### 서식 지정자

표준 서식 지정자들에 대한 간략한 설명입니다. 자세한 설명은 아래 내용을 참고하세요.

[{"서식 지정자":"\"d\"","설명":"간단한 날짜 패턴"},{"서식 지정자":"\"D\"","설명":"자세한 날짜 패턴"},{"서식 지정자":"\"f\"","설명":"전체 날짜\/간단한 시간 패턴"},{"서식 지정자":"\"F\"","설명":"전체 날짜\/자세한 시간 패턴"},{"서식 지정자":"\"g\"","설명":"일반 날짜\/간단한 시간 패턴"},{"서식 지정자":"\"G\"","설명":"일반 날짜\/자세한 시간 패턴"},{"서식 지정자":"\"M\", \"m\"","설명":"월\/일 패턴"},{"서식 지정자":"\"O\", \"o\"","설명":"왕복 날짜\/시간 패턴"},{"서식 지정자":"\"R\", \"r\"","설명":"RFC1123 패턴"},{"서식 지정자":"\"s\"","설명":"정렬 가능한 날짜\/시간 패턴"},{"서식 지정자":"\"t\"","설명":"간단한 시간 패턴"},{"서식 지정자":"\"T\"","설명":"자세한 시간 패턴"},{"서식 지정자":"\"u\"","설명":"정렬 가능한 UTC 날짜\/시간 패턴"},{"서식 지정자":"\"U\"","설명":"UTC 날짜\/시간 패턴"},{"서식 지정자":"\"Y\", \"y\"","설명":"연도 월 패턴"}]

#### "d"

"d" 표준 서식 지정자는 특정 문화권의 간단한 날짜 서식 문자열을 나타냅니다. 문화권을 지정하지 않으면 서식 문자열은 "MM/dd/yyyy"을 사용합니다.
    
    
    @Component
    script DateFormatLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 4, 10)
            log(date:ToFormattedString("d")) -- 04/10/2022
            log(date:ToFormattedString("d", "en-US")) -- 4/10/2022
        end
    end
    

#### "D"

"D" 표준 서식 지정자는 특정 문화권의 자세한 날짜 서식 문자열을 나타냅니다. 문화권을 지정하지 않으면 서식 문자열은 "dddd, dd MMMM yyyy"을 사용합니다.
    
    
    @Component
    script DateTimeFormattingDemo extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 4, 10)
            log(date:ToFormattedString("D")) -- Sunday, 10 April 2022
            log(date:ToFormattedString("D", "pt-BR")) -- domingo, 10 de abril de 2022
        end
    end
    

#### "f"

"f" 표준 서식 지정자는 공백으로 구분된 자세한 날짜("D")와 간단한 시간("t")이 조합된 다양한 패턴의 문자열을 나타냅니다. 문화권을 지정하지 않을 경우 서식 문자열은 "dddd, dd MMMM yyyy HH:mm"입니다.
    
    
    @Component
    script DateTimeFormatter extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 4, 10)
            log(date:ToFormattedString("f")) -- Sunday, 10 April 2022 00:00
            log(date:ToFormattedString("f", "pt-BR")) -- domingo, 10 de abril de 2022 00:00
        end
    end
    

#### "F"

"F" 표준 서식 지정자는 특정 문화권의 전체 날짜, 자세한 시간 서식 문자열을 나타냅니다. 문화권을 지정하지 않을 경우 서식 문자열은 "dddd, dd MMMM yyyy HH:mm:ss"입니다.
    
    
    @Component
    script DateFormattingExample extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 4, 10)
            log(date:ToFormattedString("F")) -- Sundy, 10 April 2022 00:00:00
            log(date:ToFormattedString("F", "pt-BR")) -- domingo, 10 de abril de 2022 00:00:00
        end
    end
    

#### "g"

"g" 표준 서식 지정자는 공백으로 구분된 간단한 날짜("d")와 간단한 시간("t")이 조합된 다양한 패턴의 문자열을 나타냅니다. 문화권을 지정하지 않을 경우 서식 문자열은 "MM/dd/yyyy HH:mm"이고, 문화권을 지정하면 해당 문화권의 일반 날짜("d"), 간단한 시간("t") 서식 문자열을 나타냅니다.
    
    
    @Component
    script DateFormatter extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 4, 10)
            log(date:ToFormattedString("g")) -- 04/10/2022 00:00
            log(date:ToFormattedString("g", "pt-BR")) -- 10/04/2022 00:00
        end
    end
    

#### "G"

"G" 표준 서식 지정자는 공백으로 구분된 간단한 날짜("d")와 자세한 시간("T")이 조합된 다양한 패턴의 문자열을 나타냅니다. 문화권을 지정하지 않을 경우 서식 문자열은 "MM/dd/yyyy HH:mm:ss"이고, 문화권을 지정하면 해당 문화권의 간단한 날짜("d"), 자세한 시간("T") 서식 문자열을 나타냅니다.
    
    
    @Component
    script DateLocalizationDisplay extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 4, 10)
            log(date:ToFormattedString("G")) -- 04/10/2022 00:00:00
            log(date:ToFormattedString("G", "pt-BR")) -- 10/04/2022 00:00:00
        end
    end
    

#### "O", "o"

"O", "o" 표준 서식 지정자는 왕복 날짜, 시간 서식 지정자입니다. 왕복은 날짜에서 문자열로, 문자열에서 날짜로 변환하고 복구할 수 있는 서식임을 의미합니다. "O", "o" 표준 서식 지정자는 ISO 8601을 준수하는 결과 문자열을 나타냅니다. "O", "o" 표준 서식 지정자는 DateTime 값의"yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK" 사용자 지정 서식 문자열에 해당합니다. 다음은 "O", "o" 표준 서식 지정자를 통해 문자열을 만든 다음 다시 날짜 객체로 복원하는 예제입니다.
    
    
    @Component
    script DateTimeConverter extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 4, 10)
            local formattedString = date:ToFormattedString("o")
            log(formattedString) -- 2022-04-10T00:00:00.000Z
            
            date = DateTime(formattedString)
            log(date) -- 04/10/2022 00:00:00
        end
    end
    

#### "R", "r"

"R" 또는 "r" 표준 서식 지정자는 IETF RFC 1123 사양을 기반으로 시간 값에 대한 사용자 지정 서식 문자열을 나타냅니다. ("ddd, dd MMM yyyy HH':'mm':'ss 'GMT'") 사용자 지정 서식 문자열에서 작은따옴표는 리터럴에 해당합니다. 작은따옴표는 하이픈, 콜론 및 개발 문자를 구분하는 용도로 사용합니다. 따라서 결과 문자열에 표시되지 않습니다. 시간은 IETF RFC 1123 표준에 따라 UTC로 표시되기 때문에 서식 지정자를 사용하기 전에 값이 UTC인지 확인해야 합니다.
    
    
    @Component
    script DateTimeLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 4, 10)
            log(date:ToFormattedString("r")) -- Sun, 10 Apr 2022 00:00:00 GMT
        end
    end
    

#### "s"

"s" 표준 서식 지정자는 사용자 지정 서식 문자열을 나타냅니다. ("yyyy'-'MM'-'dd'T'HH':'mm':'ss") "s" 서식 지정자는 날짜 및 시간 값에 따라 오름차순 또는 내림차순으로 정렬되는 결과 문자열을 생성하기 위한 서식 지정자입니다. 사용자 지정 서식 문자열에서 하이픈, 콜론 및 개발 문자를 구분하는 작은따옴표는 리터럴에 해당하고, 결과 문자열의 작은따옴표는 표시되지 않습니다. 날짜 및 시간 값은 일관된 형식으로 나타내지만 DateTime의 종류(UTC, Local)에 따라 값을 수정하지는 않습니다.
    
    
    @Component
    script FixedDateLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 4, 10)
            log(date:ToFormattedString("s")) -- 2022-04-10T00:00:00
        end
    end
    

#### "u"

"u" 표준 서식 지정자는 사용자 지정 서식 문자열을 나타냅니다. ("yyyy'-'MM'-'dd HH':'mm':'ss'Z") 사용자 지정 서식 문자열에서 하이픈, 콜론 및 개발 문자를 구분하는 작은따옴표 쌍은 리터럴에 해당하고, 결과 문자열의 작은따옴표는 표시되지 않습니다. 결과 문자열에 시간이 UTC로 표시합니다. 그러나 DateTime의 종류(UTC, Local)에 따라 값을 수정하지는 않으므로 서식 지정자를 사용하기 전에 값이 UTC인지 확인해야 합니다.
    
    
    @Component
    script StartupDateLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 4, 10)
            log(date:ToFormattedString("u")) -- 2022-04-10 00:00:00Z
        end
    end
    

#### "U"

"U" 표준 서식 지정자는 "F" 표준 서식 지정자와 동일한 패턴을 가지지만 "U" 표준 서식 지정자는 DateTime의 값을 UTC로 변환합니다.
    
    
    @Component
    script LocalizedDateLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 4, 10)
            log(date:ToFormattedString("U")) -- Sunday, 10 April 2022 00:00:00
            log(date:ToFormattedString("U", "pt-BR")) -- domingo, 10 de abril de 2022 00:00:00
        end
    end
    

#### "t"

"t" 표준 서식 지정자는 특정 문화권의 간단한 시간 서식 문자열을 나타냅니다. 문화권을 지정하지 않을 경우 서식 문자열은 "HH:mm"입니다.
    
    
    @Component
    script DateTimeFormatDemo extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 4, 10)
            log(date:ToFormattedString("t")) -- 00:00
            log(date:ToFormattedString("t", "en-US")) -- 12:00 AM
        end
    end
    

#### "T"

"T" 표준 서식 지정자는 특정 문화권의 자세한 시간 서식 문자열을 나타냅니다. 문화권을 지정하지 않을 경우 서식 문자열은 "HH:mm:ss"입니다.
    
    
    @Component
    script DateTimeFormatter extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 4, 10)
            log(date:ToFormattedString("T")) -- 00:00:00
            log(date:ToFormattedString("T", "en-US")) -- 12:00:00 AM
        end
    end
    

#### "M", "m"

"M" 또는 "m" 표준 서식 지정자는 특정 문화권의 월 서식 문자열을 나타냅니다. 문화권을 지정하지 않을 경우 서식 문자열은 "MMMM dd"입니다.
    
    
    @Component
    script DateTimeLocalizationDisplay extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 4, 10)
            log(date:ToFormattedString("m")) -- April 10
            log(date:ToFormattedString("m", "pt-BR")) -- 10 de abril
        end
    end
    

#### "Y", "y"

"Y" 또는 "y" 표준 서식 지정자는 특정 문화권의 년 월 서식 문자열을 나타냅니다. 문화권을 지정하지 않을 경우 서식 문자열은 "yyyy MMMM"입니다.
    
    
    @Component
    script DateFormattingExample extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 4, 10)
            log(date:ToFormattedString("y")) -- 2022 April
            log(date:ToFormattedString("y", "pt-BR")) -- abril de 2022
        end
    end
    

# 사용자 지정 날짜 및 시간 서식 지정자

사용자 지정 서식 지정자는 하나 이상의 사용자 지정 날짜 및 시간 서식 지정자로 구성됩니다. 생성되는 DateTime 값의 텍스트 표현을 정의합니다. 표준 날짜 및 시간 서식 지정자가 아닌 문자열은 사용자 지정 날짜 및 시간 서식 지정자로 해석됩니다.

#### 서식 지정자

사용자 지정 서식 지정자들에 대한 간략한 설명입니다. 자세한 설명은 아래 내용을 참고하세요.

[{"서식 지정자":"\"d\"","설명":"1부터 31까지의 일을 나타내는 서식 지정자"},{"서식 지정자":"\"dd\"","설명":"01부터 31까지의 일"},{"서식 지정자":"\"ddd\"","설명":"요일의 약식 이름"},{"서식 지정자":"\"dddd\"","설명":"요일의 전체 이름"},{"서식 지정자":"\"f\"","설명":"날짜 및 시간 값의 1\/10초"},{"서식 지정자":"\"ff\"","설명":"날짜 및 시간 값의 1\/100초"},{"서식 지정자":"\"fff\"","설명":"날짜 및 시간 값의 1\/1000초"},{"서식 지정자":"\"F\"","설명":"날짜 및 시간 값의 1\/10초. 유효 자릿수가 모두 0이면 아무것도 표시되지 않습니다."},{"서식 지정자":"\"FF\"","설명":"날짜 및 시간 값의 1\/100초. 유효 자릿수가 모두 0이면 아무것도 표시되지 않습니다."},{"서식 지정자":"\"FFF\"","설명":"날짜 및 시간 값의 1\/1000초. 유효 자릿수가 모두 0이면 아무것도 표시되지 않습니다."},{"서식 지정자":"\"g\", \"gg\"","설명":"서기 또는 연대"},{"서식 지정자":"\"h\"","설명":"1부터 12까지의 시"},{"서식 지정자":"\"hh\"","설명":"01부터 12까지의 시"},{"서식 지정자":"\"H\"","설명":"0부터 23까지의 시"},{"서식 지정자":"\"HH\"","설명":"00부터 23까지의 시"},{"서식 지정자":"\"K\"","설명":"시간대 정보"},{"서식 지정자":"\"m\"","설명":"0부터 59까지의 분"},{"서식 지정자":"\"mm\"","설명":"00부터 59까지의 분"},{"서식 지정자":"\"M\"","설명":"0부터 12월까지의 월"},{"서식 지정자":"\"MM\"","설명":"01부터 12까지의 월"},{"서식 지정자":"\"MMM\"","설명":"월의 약식 이름"},{"서식 지정자":"\"MMMM\"","설명":"월의 전체 이름"},{"서식 지정자":"\"s\"","설명":"0부터 59까지의 초"},{"서식 지정자":"\"ss\"","설명":"00부터 59까지의 초"},{"서식 지정자":"\"t\"","설명":"AM\/PM 지정자의 첫 문자"},{"서식 지정자":"\"tt\"","설명":"AM\/PM 지정자"},{"서식 지정자":"\"y\"","설명":"0부터 99까지의 연도"},{"서식 지정자":"\"yy\"","설명":"00부터 99까지의 연도"},{"서식 지정자":"\"yyy\"","설명":"최소 세 자릿수 연도"},{"서식 지정자":"\"yyyy\"","설명":"네 자릿수 연도"},{"서식 지정자":"\":\"","설명":"시간 구분 기호"},{"서식 지정자":"\"\/\"","설명":"날짜 구분 기호"},{"서식 지정자":"\"string\". 'string'","설명":"리터럴 문자열 구분 기호"},{"서식 지정자":"%","설명":"뒤에 오는 문자를 사용자 지정 서식 지정자로 정의하는 서식 지정자"}]

#### "d"

"d" 사용자 지정 서식 지정자는 일을 1부터 31까지의 숫자로 나타냅니다. 일이 한 자릿수인 경우 십의 자리는 생략합니다. 예를 들어, 3일이라면 03이 아니라 3으로 나타납니다. "d"만 단독으로 사용하는 경우 표준 서식 문자열로 잘못 해석되지 않도록 앞에 "%" 사용자 지정 서식 지정자를 사용해야 합니다.
    
    
    @Component
    script DateTimeFormatterDemo extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 8, 9, 19, 27, 15)
            log(date:ToFormattedString("%d")) -- 9
        end
    end
    

#### "dd"

"dd" 사용자 지정 서식 지정자는 일을 01부터 31까지의 숫자로 나타냅니다. 일이 한 자릿수인 경우 십의 자리에는 0이 표시됩니다.
    
    
    @Component
    script FormattedDateLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 8, 9, 19, 27, 15)
            log(date:ToFormattedString("dd")) -- 09
        end
    end
    

#### "ddd"

"ddd" 사용자 지정 서식 지정자는 요일의 약식 이름을 나타냅니다. 문화권을 지정하면, 문화권에 해당하는 약식 요일이 나타납니다.
    
    
    @Component
    script DateTimeFormattingDemo extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 8, 29, 19, 27, 15)
            log(date:ToFormattedString("ddd")) -- Mon
            log(date:ToFormattedString("ddd", "fr-FR")) -- lun.
        end
    end
    

#### "dddd"

"dddd" 사용자 지정 서식 지정자는 요일의 전체 이름을 나타냅니다. 문화권을 지정하면 문화권에 해당하는 요일이 나타납니다.
    
    
    @Component
    script LocaleDateTimeFormatter extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 8, 29, 19, 27, 15)
            log(date:ToFormattedString("dddd")) -- Monday
            log(date:ToFormattedString("dddd", "fr-FR")) -- lundi
        end
    end
    

#### "f"

"f" 사용자 지정 서식 지정자는 날짜 및 시간 값에서 1/10 초를 나타냅니다. "f"만 단독으로 사용하는 경우 표준 서식 문자열로 잘못 해석되지 않도록 앞에 "%" 사용자 지정 서식 지정자를 사용해야 합니다.
    
    
    @Component
    script FractionalTimeLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 8, 29, 19, 27, 15, 023)
            log(date:ToFormattedString("%f")) -- 0
        end
    end
    

#### "ff"

"ff" 사용자 지정 서식 지정자는 날짜 및 시간 값에서 1/100 초를 나타냅니다.
    
    
    @Component
    script CentisecondLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 8, 29, 19, 27, 15, 023)
            log(date:ToFormattedString("ff")) -- 02
        end
    end
    

#### "fff"

"fff" 사용자 지정 서식 지정자는 날짜 및 시간 값에서 1/1000 초를 나타냅니다.
    
    
    @Component
    script DateMillisecondLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 8, 29, 19, 27, 15, 023)
            log(date:ToFormattedString("fff")) -- 023
        end
    end
    

#### "F"

"F" 사용자 지정 서식 지정자는 날짜 및 시간 값에서 1/10 초를 나타냅니다. 유효 자릿수가 모두 0이면 아무것도 표시되지 않습니다. "F"만 단독으로 사용하는 경우 표준 서식 문자열로 잘못 해석되지 않도록 앞에 "%" 사용자 지정 서식 지정자를 사용해야 합니다.
    
    
    @Component
    script FixedDateLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 8, 29, 19, 27, 15, 023)
            log(date:ToFormattedString("%F")) -- empty
        end
    end
    

#### "FF"

"FF" 사용자 지정 서식 지정자는 날짜 및 시간 값에서 1/100 초를 나타냅니다. 유효 자릿수는 2개이며, 유효 자릿수가 모두 0이면 아무것도 표시되지 않습니다. 유효 자릿수가 3개 이상일 경우에도 2개의 유효 자릿수만 나타납니다.
    
    
    @Component
    script SubsecondLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 8, 29, 19, 27, 15, 023)
            log(date:ToFormattedString("FF")) -- 02
        end
    end
    

#### "FFF"

"FFF" 사용자 지정 서식 지정자는 날짜 및 시간 값에서 1/1000 초를 나타냅니다. 유효 자릿수는 3개이며, 유효 자릿수가 모두 0이면 아무것도 표시되지 않습니다.
    
    
    @Component
    script MillisecondLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 8, 29, 19, 27, 15, 023)
            log(date:ToFormattedString("FFF")) -- 023
        end
    end
    

#### "g", "gg"

"g" 또는 "gg" 사용자 지정 서식 지정자는 연대를 나타냅니다. 기본적으로 A.D(Anno Domini, 기원후)로 나타납니다. "g" 사용자 지정 서식 지정자만 단독으로 사용하는 경우 표준 서식 문자열로 잘못 해석되지 않도록 앞에 "%" 사용자 지정 서식 지정자를 사용해야 합니다.
    
    
    @Component
    script FixedDateLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 8, 29, 19, 27, 15, 023)
            log(date:ToFormattedString("%g")) -- A.D.
        end
    end
    

#### "h"

"h" 사용자 지정 서식 지정자는 시간을 1부터 12까지의 숫자로 나타냅니다. 시가 한 자릿수인 경우 십의 자리는 표시되지 않습니다. 자정 또는 정오 이후의 총시간을 계산하는 12시간 형식으로 나타냅니다. 자정 이후의 시간과 정오 이후의 시간을 구별할 수 없습니다. "h"만 단독으로 사용하는 경우 표준 서식 문자열로 잘못 해석되지 않도록 앞에 "%" 사용자 지정 서식 지정자를 사용해야 합니다.
    
    
    @Component
    script FixedTimeDisplay extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 8, 29, 19, 27, 15, 023)
            log(date:ToFormattedString("%h")) -- 7
        end
    end
    

#### "hh"

"hh" 사용자 지정 서식 지정자는 시간을 1부터 12까지의 숫자로 나타냅니다. 시가 한 자릿수인 경우 십의 자리에는 0이 표시됩니다. 자정 또는 정오 이후의 총시간을 계산하는 12시간 형식으로 나타냅니다. 자정 이후의 시간과 정오 이후의 시간을 구별할 수 없습니다.
    
    
    @Component
    script FixedHourLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 8, 29, 19, 27, 15, 023)
            log(date:ToFormattedString("hh")) -- 07
        end
    end
    

#### "H"

"H" 사용자 지정 서식 지정자는 시간을 0부터 23까지의 숫자로 나타냅니다. 시가 한 자릿수인 경우 십의 자리는 표시되지 않습니다. 자정 이후의 시간을 계산하는 24시간 형식으로 나타냅니다. "H"만 단독으로 사용하는 경우 표준 서식 문자열로 잘못 해석되지 않도록 앞에 "%" 사용자 지정 서식 지정자를 사용해야 합니다.
    
    
    @Component
    script FixedTimeLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 8, 29, 19, 27, 15, 023)
            log(date:ToFormattedString("%H")) -- 19
        end
    end
    

#### "HH"

"HH" 사용자 지정 서식 지정자는 0부터 23까지의 숫자로 나타냅니다. 시가 한 자릿수인 경우 십의 자리에는 0이 표시됩니다. 자정 이후의 시간을 계산하는 24시간 형식으로 나타냅니다.
    
    
    @Component
    script DateTimeHourLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 8, 29, 19, 27, 15, 023)
            log(date:ToFormattedString("HH")) -- 19
        end
    end
    

#### "K"

"K" 사용자 지정 서식 지정자는 날짜 및 시간 값의 표준 시간대 정보를 나타냅니다. "K" 사용자 지정 서식 지정자만 단독으로 사용하는 경우 표준 서식 문자열로 잘못 해석되지 않도록 앞에 "%" 사용자 지정 서식 지정자를 사용해야 합니다.

  * DateTime의 종류가 Local일 경우 이 지정자는 UTC에서의 로컬 오프셋이 포함된 결과 문자열이 출력됩니다.
  * DateTime의 종류가 UTC일 경우 결과 문자열에 UTC 날짜를 나타내는 "Z" 문자가 포함되어 출력됩니다.


    
    
    @Component
    script StaticTimezoneFormatter extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 8, 29, 19, 27, 15, 023)
            log(date:ToFormattedString("%K")) -- Z
        end
    end
    

#### "m"

"m" 사용자 지정 서식 지정자는 분을 0부터 59까지의 숫자로 나타냅니다. 분은 마지막 시간 이후 경과한 총 분 수를 나타냅니다. 분이 한 자릿수인 경우 십의 자리는 표시되지 않습니다. "m" 사용자 지정 서식 지정자만 단독으로 사용하는 경우 표준 서식 문자열로 잘못 해석되지 않도록 앞에 "%" 사용자 지정 서식 지정자를 사용해야 합니다.
    
    
    @Component
    script FormattedDateLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 8, 29, 19, 7, 15, 023)
            log(date:ToFormattedString("%m")) -- 7
        end
    end
    

#### "mm"

"mm" 사용자 지정 서식 지정자는 분을 00부터 59까지의 숫자로 나타냅니다. 분은 마지막 시간 이후 경과한 총 분 수를 나타냅니다. 분이 한 자릿수인 경우 십의 자리는 0으로 표시됩니다.
    
    
    @Component
    script FixedDateTimeLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 8, 29, 19, 7, 15, 023)
            log(date:ToFormattedString("mm")) -- 07
        end
    end
    

#### "M"

"M" 사용자 지정 서식 지정자는 월을 1부터 12까지의 숫자로 나타냅니다. 월이 한 자릿수인 경우 십의 자리는 표시되지 않습니다. "M" 사용자 지정 서식 지정자만 단독으로 사용하는 경우 표준 서식 문자열로 잘못 해석되지 않도록 앞에 "%" 사용자 지정 서식 지정자를 사용해야 합니다.
    
    
    @Component
    script FixedDateLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 8, 29, 19, 7, 15, 023)
            log(date:ToFormattedString("%M")) -- 8
        end
    end
    

#### "MM"

"MM" 사용자 지정 서식 지정자는 월을 01부터 12까지의 숫자로 나타냅니다. 월이 한 자릿수인 경우 십의 자리는 0으로 표시됩니다.
    
    
    @Component
    script FixedDateLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 8, 29, 19, 7, 15, 023)
            log(date:ToFormattedString("MM")) -- 08
        end
    end
    

#### "MMM"

"MMM" 사용자 지정 서식 지정자는 월의 약식 이름을 나타냅니다. 문화권을 지정하면 문화권에 해당하는 월의 약식 이름이 나타납니다.
    
    
    @Component
    script LocaleDateTimeFormatter extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 8, 29, 19, 7, 15, 023)
            log(date:ToFormattedString("MMM")) -- Aug
            log(date:ToFormattedString("MMM", "it-IT")) -- ago
        end
    end
    

#### "MMMM"

"MMMM" 사용자 지정 서식 지정자는 월의 전체 이름을 나타냅니다.
    
    
    @Component
    script DateTimeFormatterExample extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 8, 29, 19, 7, 15, 023)
            log(date:ToFormattedString("MMMM")) -- August
            log(date:ToFormattedString("MMMM", "it-IT")) -- agosto
        end
    end
    

#### "s"

"s" 사용자 지정 서식 지정자는 초를 0부터 59까지의 숫자로 나타냅니다. 한 자릿수 초인 경우 십의 자리는 표시되지 않습니다. "s" 사용자 지정 서식 지정자만 단독으로 사용하는 경우 표준 서식 문자열로 잘못 해석되지 않도록 앞에 "%" 사용자 지정 서식 지정자를 사용해야 합니다. 초는 마지막 분 이후 경과한 총 초 수를 나타냅니다.
    
    
    @Component
    script FixedDateTimeLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 8, 29, 19, 7, 5, 023)
            log(date:ToFormattedString("%s")) -- 5
        end
    end
    

#### "ss"

"ss" 사용자 지정 서식 지정자는 초를 00부터 59까지의 숫자로 나타냅니다. 한 자릿수 초인 경우 십의 자리는 0으로 표시됩니다. 초는 마지막 분 이후 경과한 총 초 수를 나타냅니다.
    
    
    @Component
    script FixedDateLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 8, 29, 19, 7, 5, 023)
            log(date:ToFormattedString("ss")) -- 05
        end
    end
    

#### "t"

"t" 사용자 지정 서식 지정자는 AM/PM 지정자의 첫 문자를 나타냅니다. AM 지정자는 0:00:00부터 11:59:59.999까지의 모든 시간에 사용되고, PM 지정자는 12:00:00부터 23:59:59.999까지의 모든 시간에 사용됩니다. "t"만 단독으로 사용하는 경우 표준 서식 문자열로 잘못 해석되지 않도록 앞에 "%" 사용자 지정 서식 지정자를 사용해야 합니다.
    
    
    @Component
    script FixedDateTimeLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 8, 29, 19, 7, 5, 023)
            log(date:ToFormattedString("%t")) -- P
        end
    end
    

#### "tt"

"tt" 사용자 지정 서식 지정자는 AM/PM 지정자를 나타냅니다. AM 지정자는 0:00:00부터 11:59:59.999까지의 모든 시간에 사용되고 PM 지정자는 12:00:00부터 23:59:59.999까지의 모든 시간에 사용됩니다.
    
    
    @Component
    script FixedTimeFormatLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 8, 29, 19, 7, 5, 023)
            log(date:ToFormattedString("tt")) -- PM
        end
    end
    

#### "y"

"y" 사용자 지정 서식 지정자는 연도를 한자리 또는 두 자리 숫자로 나타냅니다. 연도가 두 자리를 넘으면 끝의 두 자리 숫자만 결과에 나타나고, 연도의 십의 자리가 0인 경우 0은 표시되지 않습니다. 예를 들어 연도가 2008이라면 8만 나타납니다. "y"만 단독으로 사용하는 경우 표준 서식 문자열로 잘못 해석되지 않도록 앞에 "%" 사용자 지정 서식 지정자를 사용해야 합니다.
    
    
    @Component
    script FixedDateLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 8, 29, 19, 7, 5, 023)
            log(date:ToFormattedString("%y")) -- 22
        end
    end
    

#### "yy"

"yy" 사용자 지정 서식 지정자는 연도를 두 자리 숫자로 나타냅니다. 연도가 두 자리를 넘으면 끝의 두 자릿수만 결과에 나타납니다. 나타나는 연도의 십의 자리가 0이라면 그대로 나타납니다.
    
    
    @Component
    script FixedDateLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 8, 29, 19, 7, 5, 023)
            log(date:ToFormattedString("yy")) -- 22
        end
    end
    

#### "yyy"

"yyy" 사용자 지정 서식 지정자는 연도를 최소 세 자리 숫자로 나타냅니다. 연도의 유효 자릿수가 세 자리보다 많더라도 결과 문자열에 포함됩니다. 연도가 세 자릿수 미만인 경우 0을 채워 세 자리로 나타납니다.
    
    
    @Component
    script FixedDateLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 8, 29, 19, 7, 5, 023)
            log(date:ToFormattedString("yyy")) -- 2022
        end
    end
    

#### "yyyy"

"yyyy" 사용자 지정 서식 지정자는 연도를 네 자리 숫자로 나타냅니다. 연도가 네 자릿수 미만인 경우 0을 채워 네 자리로 나타납니다.
    
    
    @Component
    script FormattedDateLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime(2022, 8, 29, 19, 7, 5, 023)
            log(date:ToFormattedString("yyyy")) -- 2022
        end
    end
    

#### ":"

":" 사용자 지정 서식 지정자는 시, 분, 초를 구분하는 데 사용되는 시간 구분 기호를 나타냅니다. ":" 사용자 지정 서식 지정자만 단독으로 사용하는 경우 표준 서식 문자열로 잘못 해석되지 않도록 앞에 "%" 사용자 지정 서식 지정자를 사용해야 합니다.
    
    
    @Component
    script DateTimeLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            -- today 2022/05/17
            
            local date = DateTime("3:32:22", "h:mm:ss")
            log(date) -- 05/17/2022 03:32:22
        end
    end
    

#### "/"

"/" 사용자 지정 서식 지정자는 년, 월, 일을 구분하는 데 사용되는 날짜 구분 기호를 나타냅니다. "/" 사용자 지정 서식 지정자만 단독으로 사용하는 경우 표준 서식 문자열로 잘못 해석되지 않도록 앞에 "%" 사용자 지정 서식 지정자를 사용해야 합니다.
    
    
    @Component
    script StaticDateTimeLogger extends Component
        @ExecSpace("ServerOnly")
        method void OnBeginPlay()
            local date = DateTime("2022/6/21", "yyyy/M/dd")
            log(date) -- 06/21/2022 00:00:00
        end
    end