C#의 DateTime.GetDateTimeFormats() 메서드는 현재 DateTime 인스턴스의 값을 표준 날짜 및 시간 형식 지정자가 지원하는 모든 문자열 표현으로 변환할 때 사용합니다. 이 메서드를 호출하면 다양한 날짜·시간 형식의 문자열들이 담긴 배열(string[])이 반환되며, 반환되는 형식은 현재 스레드의 문화권(Culture) 설정에 따라 달라집니다.
구문
메서드 구문은 다음과 같습니다.
public string[] GetDateTimeFormats(); public string[] GetDateTimeFormats(char ch);
ch 매개변수에는 표준 날짜 및 시간 형식 문자를 전달할 수 있습니다. 예를 들어 'd'는 간단한 날짜 패턴, 'D'는 자세한 날짜 패턴, 'F'는 전체 날짜/시간 패턴(긴 시간 포함)을 의미합니다.
예제 1: 지원되는 모든 형식 가져오기
다음 예제는 매개변수 없이 호출하여 지원 가능한 모든 문자열 표현을 확인하는 방법을 보여줍니다.
using System;
public class Demo {
public static void Main() {
DateTime d = new DateTime(2019, 11, 10, 7, 20, 45);
string[] res = d.GetDateTimeFormats();
foreach(string s in res)
Console.WriteLine(s);
}
}
실행 결과
위 코드를 실행하면 아래와 같이 다양한 조합의 날짜·시간 문자열이 출력됩니다.
11/10/2019 11/10/19 19/11/10 2019-11-10 10-Nov-19 Sunday, November 10, 2019 November 10, 2019 Sunday, November 10, 2019 7:20 AM Sunday, November 10, 2019 7:20:45 AM ... 2019-11-10T07:20:45.0000000 Sun, 10 Nov 2019 07:20:45 GMT 2019-11-10T07:20:45 7:20 AM 7:20:45 AM 2019-11-10 07:20:45Z November 2019
※ 실제 출력 결과는 위보다 훨씬 많으며, 날짜 전용·날짜+시간·정렬 가능 형식·RFC1123 형식·시간 전용 형식 등 여러 범주의 문자열이 모두 포함됩니다.
예제 2: 형식 지정자를 사용한 호출
형식 지정자를 지정하면 해당 범주에 속한 형식들만 반환됩니다. 아래 예제에서는 'F'(전체 날짜/시간 패턴) 지정자를 사용해 보겠습니다.
using System;
public class Demo {
public static void Main() {
DateTime d = new DateTime(2019, 11, 10, 7, 20, 45);
string[] res = d.GetDateTimeFormats('F');
foreach(string s in res)
Console.WriteLine(s);
}
}
실행 결과
Sunday, November 10, 2019 7:20:45 AM Sunday, November 10, 2019 07:20:45 AM Sunday, November 10, 2019 7:20:45 Sunday, November 10, 2019 07:20:45 November 10, 2019 7:20:45 AM November 10, 2019 07:20:45 AM November 10, 2019 7:20:45 November 10, 2019 07:20:45 Sunday, 10 November, 2019 7:20:45 AM Sunday, 10 November, 2019 07:20:45 AM Sunday, 10 November, 2019 7:20:45 Sunday, 10 November, 2019 07:20:45 10 November, 2019 7:20:45 AM 10 November, 2019 07:20:45 AM 10 November, 2019 7:20:45 10 November, 2019 07:20:45
정리
GetDateTimeFormats()는 매개변수 없이 호출하면 현재 문화권에서 지원하는 모든 날짜·시간 문자열 표현을, 형식 지정자를 전달하면 해당 범주의 표현만 반환합니다. 사용자에게 날짜 형식 선택지를 제공해야 하는 UI나 로그 파싱 등에서 유용하게 활용할 수 있습니다.