다음을 통해 공유


방법: 특정 날짜의 요일 추출

.NET Framework를 사용하면 특정 날짜의 순차적 요일을 쉽게 확인할 수 있으며 특정 날짜에 대해 지역화된 요일 이름을 표시할 수 있습니다. 특정 날짜에 해당하는 요일을 나타내는 열거형 값은 DayOfWeek 또는 DayOfWeek 속성에서 사용할 수 있습니다. 반면 요일 이름을 검색하는 작업은 날짜 및 시간 값의 ToString 메서드 또는 String.Format 메서드와 같은 서식 지정 메서드를 호출하여 수행할 수 있는 서식 지정 작업입니다. 이 항목에서는 이러한 서식 지정 작업을 수행하는 방법을 보여 줍니다.

특정 날짜의 요일을 나타내는 숫자를 추출하려면

  1. 날짜의 문자열 표현을 사용하는 경우 정적 DateTime.Parse 또는 DateTimeOffset.Parse 메서드를 사용하여 해당 표현을 DateTime 또는 DateTimeOffset 값으로 변환합니다.

  2. DateTime.DayOfWeek 또는 DateTimeOffset.DayOfWeek 속성을 사용하여 요일을 나타내는 DayOfWeek 값을 검색합니다.

  3. 필요한 경우 DayOfWeek 값을 정수로 캐스팅(C#의 경우)하거나 변환(Visual Basic의 경우)합니다.

다음 예제에서는 날짜의 문자열 표현에서 요일을 나타내는 정수를 표시합니다.

Dim dateValue As Date = #6/11/2008#
Console.WriteLine(dateValue.DayOfWeek)           ' Displays 3
DateTime dateValue = new DateTime(2008, 6, 11);
Console.WriteLine((int) dateValue.DayOfWeek);      // Displays 3

특정 날짜의 약식 요일 이름을 추출하려면

  1. 날짜의 문자열 표현을 사용하는 경우 정적 DateTime.Parse 또는 DateTimeOffset.Parse 메서드를 사용하여 해당 표현을 DateTime 또는 DateTimeOffset 값으로 변환합니다.

  2. 현재 문화권 또는 특정 문화권의 약식 요일 이름을 추출할 수 있습니다.

    1. 현재 문화권에 대해 약식 요일 이름을 추출하려면 날짜 및 시간 값의 DateTime.ToString(String) 또는 DateTimeOffset.ToString(String) 인스턴스 메서드를 호출하고 "ddd" 문자열을 format 매개 변수로 전달합니다. 다음 예제에서는 ToString(String) 메서드 호출을 보여 줍니다.

      Dim dateValue As Date = #6/11/2008#
      Console.WriteLine(dateValue.ToString("ddd"))    ' Displays Wed
      
      DateTime dateValue = new DateTime(2008, 6, 11);
      Console.WriteLine(dateValue.ToString("ddd"));    // Displays Wed
      
    2. 특정 문화권에 대해 약식 요일 이름을 추출하려면 날짜 및 시간 값의 DateTime.ToString(String, IFormatProvider) 또는 DateTimeOffset.ToString(String, IFormatProvider) 인스턴스 메서드를 호출합니다. "ddd" 문자열을 format 매개 변수로 전달합니다. 해당 요일 이름을 provider 매개 변수로 검색할 문화권을 나타내는 CultureInfo 또는 DateTimeFormatInfo 개체를 전달합니다. 다음 코드에서는 fr-FR 문화권을 나타내는 CultureInfo 개체를 사용하여 ToString(String, IFormatProvider) 메서드를 호출하는 방법을 보여 줍니다.

      Dim dateValue As Date = #6/11/2008#
      Console.WriteLine(dateValue.ToString("ddd", _
                        New CultureInfo("fr-FR")))    ' Displays mer.
      
      DateTime dateValue = new DateTime(2008, 6, 11);
      Console.WriteLine(dateValue.ToString("ddd", 
                        new CultureInfo("fr-FR")));    // Displays mer.
      

특정 날짜의 전체 요일 이름을 추출하려면

  1. 날짜의 문자열 표현을 사용하는 경우 정적 DateTime.Parse 또는 DateTimeOffset.Parse 메서드를 사용하여 해당 표현을 DateTime 또는 DateTimeOffset 값으로 변환합니다.

  2. 현재 문화권 또는 특정 문화권의 전체 요일 이름을 추출할 수 있습니다.

    1. 현재 문화권에 대해 요일 이름을 추출하려면 날짜 및 시간 값의 DateTime.ToString(String) 또는 DateTimeOffset.ToString(String) 인스턴스 메서드를 호출하고 "dddd" 문자열을 format 매개 변수로 전달합니다. 다음 예제에서는 ToString(String) 메서드 호출을 보여 줍니다.

      Dim dateValue As Date = #6/11/2008#
      Console.WriteLine(dateValue.ToString("dddd"))    ' Displays Wednesday
      
      DateTime dateValue = new DateTime(2008, 6, 11);
      Console.WriteLine(dateValue.ToString("dddd"));    // Displays Wednesday
      
    2. 특정 문화권에 대해 요일 이름을 추출하려면 날짜 및 시간 값의 DateTime.ToString(String, IFormatProvider) 또는 DateTimeOffset.ToString(String, IFormatProvider) 인스턴스 메서드를 호출합니다. "dddd" 문자열을 format 매개 변수로 전달합니다. 해당 요일 이름을 provider 매개 변수로 검색할 문화권을 나타내는 CultureInfo 또는 DateTimeFormatInfo 개체를 전달합니다. 다음 코드에서는 es-ES 문화권을 나타내는 CultureInfo 개체를 사용하여 ToString(String, IFormatProvider) 메서드를 호출하는 방법을 보여 줍니다.

      Dim dateValue As Date = #6/11/2008#
      Console.WriteLine(dateValue.ToString("dddd", _
                        New CultureInfo("es-ES")))     ' Displays miércoles.
      
      DateTime dateValue = new DateTime(2008, 6, 11);
      Console.WriteLine(dateValue.ToString("dddd", 
                        new CultureInfo("es-ES")));    // Displays miércoles.
      

예제

이 예제에서는 DateTime.DayOfWeekDateTimeOffset.DayOfWeek 속성과 DateTime.ToStringDateTimeOffset.ToString 메서드를 호출하여 특정 날짜에 대해 요일을 나타내는 숫자, 약식 요일 이름 및 전체 요일 이름을 검색하는 방법을 보여 줍니다.

Dim dateString As String = "6/11/2007"
Dim dateValue As Date
Dim dateOffsetValue As DateTimeOffset

Try
   Dim dateTimeFormats As DateTimeFormatInfo
   ' Convert date representation to a date value
   dateValue = Date.Parse(dateString, CultureInfo.InvariantCulture)
   dateOffsetValue = New DateTimeOffset(dateValue, _
                               TimeZoneInfo.Local.GetUtcOffset(dateValue))            
   ' Convert date representation to a number indicating the day of week
   Console.WriteLine(dateValue.DayOfWeek)
   Console.WriteLine(dateOffsetValue.DayOfWeek)

   ' Display abbreviated weekday name using current culture
   Console.WriteLine(dateValue.ToString("ddd"))
   Console.WriteLine(dateOffsetValue.ToString("ddd"))

   ' Display full weekday name using current culture
   Console.WriteLine(dateValue.ToString("dddd"))
   Console.WriteLine(dateOffsetValue.ToString("dddd"))

   ' Display abbreviated weekday name for de-DE culture
   Console.WriteLine(dateValue.ToString("ddd", New CultureInfo("de-DE")))
   Console.WriteLine(dateOffsetValue.ToString("ddd", _
                                              New CultureInfo("de-DE")))

   ' Display abbreviated weekday name with de-DE DateTimeFormatInfo object
   dateTimeFormats = New CultureInfo("de-DE").DateTimeFormat
   Console.WriteLine(dateValue.ToString("ddd", dateTimeFormats))
   Console.WriteLine(dateOffsetValue.ToString("ddd", dateTimeFormats))

   ' Display full weekday name for fr-FR culture
   Console.WriteLine(dateValue.ToString("ddd", New CultureInfo("fr-FR")))
   Console.WriteLine(dateOffsetValue.ToString("ddd", _
                                              New CultureInfo("fr-FR")))

   ' Display abbreviated weekday name with fr-FR DateTimeFormatInfo object
   dateTimeFormats = New CultureInfo("fr-FR").DateTimeFormat
   Console.WriteLine(dateValue.ToString("dddd", dateTimeFormats))
   Console.WriteLine(dateOffsetValue.ToString("dddd", dateTimeFormats))
Catch e As FormatException
   Console.WriteLine("Unable to convert {0} to a date.", dateString)
End Try
' The example displays the following output to the console:
'       1
'       1
'       Mon
'       Mon
'       Monday
'       Monday
'       Mo
'       Mo
'       Mo
'       Mo
'       lun.
'       lun.
'       lundi
'       lundi
string dateString = "6/11/2007";
DateTime dateValue;
DateTimeOffset dateOffsetValue;

try
{
   DateTimeFormatInfo dateTimeFormats;
   // Convert date representation to a date value
   dateValue = DateTime.Parse(dateString, CultureInfo.InvariantCulture);
   dateOffsetValue = new DateTimeOffset(dateValue, 
                                TimeZoneInfo.Local.GetUtcOffset(dateValue));         

   // Convert date representation to a number indicating the day of week
   Console.WriteLine((int) dateValue.DayOfWeek);
   Console.WriteLine((int) dateOffsetValue.DayOfWeek);

   // Display abbreviated weekday name using current culture
   Console.WriteLine(dateValue.ToString("ddd"));
   Console.WriteLine(dateOffsetValue.ToString("ddd"));

   // Display full weekday name using current culture
   Console.WriteLine(dateValue.ToString("dddd"));
   Console.WriteLine(dateOffsetValue.ToString("dddd"));

   // Display abbreviated weekday name for de-DE culture
   Console.WriteLine(dateValue.ToString("ddd", new CultureInfo("de-DE")));
   Console.WriteLine(dateOffsetValue.ToString("ddd", 
                                               new CultureInfo("de-DE")));

   // Display abbreviated weekday name with de-DE DateTimeFormatInfo object
   dateTimeFormats = new CultureInfo("de-DE").DateTimeFormat;
   Console.WriteLine(dateValue.ToString("ddd", dateTimeFormats));
   Console.WriteLine(dateOffsetValue.ToString("ddd", dateTimeFormats));

   // Display full weekday name for fr-FR culture
   Console.WriteLine(dateValue.ToString("ddd", new CultureInfo("fr-FR")));
   Console.WriteLine(dateOffsetValue.ToString("ddd", 
                                              new CultureInfo("fr-FR")));

   // Display abbreviated weekday name with fr-FR DateTimeFormatInfo object
   dateTimeFormats = new CultureInfo("fr-FR").DateTimeFormat;
   Console.WriteLine(dateValue.ToString("dddd", dateTimeFormats));
   Console.WriteLine(dateOffsetValue.ToString("dddd", dateTimeFormats));
}
catch (FormatException)
{
   Console.WriteLine("Unable to convert {0} to a date.", dateString);
}
// The example displays the following output to the console:
//       1
//       1
//       Mon
//       Mon
//       Monday
//       Monday
//       Mo
//       Mo
//       Mo
//       Mo
//       lun.
//       lun.
//       lundi
//       lundi

각 언어에서 .NET Framework가 제공하는 기능과 중복되거나 해당 기능을 보완하는 기능을 제공할 수도 있습니다. 예를 들어 Visual Basic에는 이와 같은 두 가지 함수가 포함되어 있습니다.

  • 특정 날짜의 요일을 나타내는 숫자를 반환하는 Weekday. 여기서는 1주일 중 첫날의 순차적 값이 1로 간주되는 반면 DateTime.DayOfWeek 속성은 해당 값을 0으로 간주합니다.

  • 현재 문화권에서 특정 요일 번호에 해당하는 주 이름을 반환하는 WeekdayName

다음 예제에서는 Visual Basic의 Weekday 및 WeekdayName 함수를 사용하는 예를 보여 줍니다.

Dim dateValue As Date = #6/11/2008#

' Get weekday number using Visual Basic Weekday function
Console.WriteLine(Weekday(dateValue))                 ' Displays 4
' Compare with .NET DateTime.DayOfWeek property
Console.WriteLine(dateValue.DayOfWeek)                ' Displays 3

' Get weekday name using Weekday and WeekdayName functions
Console.WriteLine(WeekdayName(Weekday(dateValue)))    ' Displays Wednesday

' Change culture to de-DE
Dim originalCulture As CultureInfo = Thread.CurrentThread.CurrentCulture
Thread.CurrentThread.CurrentCulture = New CultureInfo("de-DE")
' Get weekday name using Weekday and WeekdayName functions
Console.WriteLine(WeekdayName(Weekday(dateValue)))   ' Displays Donnerstag

' Restore original culture
Thread.CurrentThread.CurrentCulture = originalCulture   

DateTime.DayOfWeek 속성이 반환하는 값을 사용하여 특정 날짜의 요일 이름을 검색할 수도 있습니다. 이렇게 하려면 속성이 반환하는 DayOfWeek 값에 대해 ToString 메서드만 호출하면 됩니다. 그러나 이 기술을 사용해도 다음 예제에서처럼 현재 문화권에 대해 지역화된 요일 이름이 생성되지는 않습니다.

' Change current culture to fr-FR
Dim originalCulture As CultureInfo = Thread.CurrentThread.CurrentCulture
Thread.CurrentThread.CurrentCulture = New CultureInfo("fr-FR")

Dim dateValue As Date = #6/11/2008#
' Display the DayOfWeek string representation
Console.WriteLine(dateValue.DayOfWeek.ToString())     ' Displays Wednesday
' Restore original current culture
Thread.CurrentThread.CurrentCulture = originalCulture
// Change current culture to fr-FR
CultureInfo originalCulture = Thread.CurrentThread.CurrentCulture;
Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-FR");

DateTime dateValue = new DateTime(2008, 6, 11);
// Display the DayOfWeek string representation
Console.WriteLine(dateValue.DayOfWeek.ToString());   // Displays Wednesday
// Restore original current culture
Thread.CurrentThread.CurrentCulture = originalCulture;

코드 컴파일

이 예제에는 다음 사항이 필요합니다.

  • 다음 네임스페이스를 가져와야 합니다.

또한 예제에는 다음 사항도 필요합니다.

  • 코드 예제를 추가할 프로젝트에 System.Windows.Forms.dll에 대한 참조를 추가해야 합니다.

참고 항목

개념

형식 지정 작업 수행

표준 날짜 및 시간 서식 문자열

사용자 지정 날짜 및 시간 형식 문자열