C# 프로그래밍을 하다 보면 DateTime 객체에서 시간 정보를 제외하고 날짜 정보만 필요한 경우가 자주 있습니다. 다행히 이를 처리하는 방법은 여러 가지가 있으며, 각 방법마다 특징과 장단점이 조금씩 다릅니다. 지금부터 대표적인 네 가지 방법을 예제와 함께 살펴보겠습니다.
1. ToShortDateString()
ToShortDateString()은 현재 DateTime 객체의 값을 해당하는 짧은 날짜(short date) 문자열 표현으로 변환하는 메서드입니다.
반환값은 현재 DateTime 객체의 짧은 날짜 문자열 표현이 담긴 문자열입니다.
2. ToLongDateString()
ToLongDateString()은 현재 DateTime 객체의 값을 해당하는 긴 날짜(long date) 문자열 표현으로 변환하는 메서드입니다.
반환값은 현재 DateTime 객체의 긴 날짜 문자열 표현이 담긴 문자열입니다.
실제 출력 형식은 실행 환경의 문화권(culture) 설정에 따라 달라질 수 있습니다.
3. ToString()
ToString() 메서드를 사용하는 것도 DateTime에서 날짜를 가져오는 또 다른 방법입니다.
이 방법의 가장 큰 장점은 원하는 날짜 형식을 직접 지정할 수 있다는 점입니다. 예를 들어 "MM/dd/yyyy", "yyyy-MM-dd"처럼 다양한 형식을 자유롭게 적용할 수 있습니다.
4. DateTime.Date
DateTime.Date 속성도 DateTime에서 시간 정보를 제거하고 날짜만 제공합니다.
앞선 방법들과의 차이점은 결과가 문자열로 변환되지 않고 DateTime 타입 그대로 유지된다는 것입니다. 따라서 문자열이 아닌 DateTime 객체 자체가 필요한 경우에 유용합니다. 단, 시간 부분은 00:00:00으로 초기화됩니다.
예제 1: DateTime 확장 메서드 활용
using System;
namespace DemoApplication{
public class Program{
public static void Main(){
var dateTime = DateTime.Now;
Console.WriteLine($"DateTime Value: {dateTime}");
var shortDateValue = dateTime.ToShortDateString();
Console.WriteLine($"Short Date Value: {shortDateValue}");
var longDateValue = dateTime.ToLongDateString();
Console.WriteLine($"Long Date Value: {longDateValue}");
Console.ReadLine();
}
}
}
출력 결과
DateTime Value: 07-08-2020 21:36:46 Short Date Value: 07-08-2020 Long Date Value: 07 August 2020
예제 2: DateTime.Date 속성 활용
using System;
namespace DemoApplication{
public class Program{
public static void Main(){
var dateTime = DateTime.Now;
Console.WriteLine($"DateTime Value: {dateTime}");
var dateValue = dateTime.Date;
Console.WriteLine($"Date Value: {dateValue}");
Console.ReadLine();
}
}
}
출력 결과
DateTime Value: 07-08-2020 21:45:21 Date Value: 07-08-2020 00:00:00
시간이 00:00:00으로 초기화되어 순수하게 날짜 정보만 남는 것을 확인할 수 있습니다.
예제 3: ToString() 메서드로 형식 지정
using System;
namespace DemoApplication{
public class Program{
public static void Main(){
var dateTime = DateTime.Now;
Console.WriteLine($"DateTime Value: {dateTime}");
var dateValue1 = dateTime.ToString("MM/dd/yyyy");
Console.WriteLine($"Date Value: {dateValue1}");
var dateValue2 = dateTime.ToString("dd/MM/yyyy");
Console.WriteLine($"Date Value: {dateValue2}");
var dateValue3 = dateTime.ToString("d/M/yy");
Console.WriteLine($"Date Value: {dateValue3}");
Console.ReadLine();
}
}
}
출력 결과
DateTime Value: 07-08-2020 21:58:17 Date Value: 08-07-2020 Date Value: 07-08-2020 Date Value: 7-8-20
지정한 형식 문자열에 따라 같은 날짜도 전혀 다른 모양으로 출력되는 것을 볼 수 있습니다.
정리
· 문자열 형태의 날짜가 필요하다면 ToShortDateString() 또는 ToLongDateString()을 사용합니다.
· 날짜 형식을 직접 제어해야 한다면 ToString("형식")을 사용합니다.
· 문자열이 아닌 DateTime 타입 그대로 날짜가 필요하다면 DateTime.Date 속성을 사용합니다(시간은 00:00:00으로 설정됨).