Практическое руководство. Извлечение дня недели из конкретной датыHow to: Extract the Day of the Week from a Specific Date

Платформа .NET Framework упрощает определение дня недели и отображение локализованного дня для определенной даты.The .NET Framework makes it easy to determine the ordinal day of the week for a particular date, and to display the localized weekday name for a particular date. Значение перечисления, которое указывает день недели, соответствующий определенной дате, можно получить из свойства DayOfWeek или DayOfWeek.An enumerated value that indicates the day of the week corresponding to a particular date is available from the DayOfWeek or DayOfWeek property. Напротив, получение названия дня недели — это операция форматирования, которую можно выполнить с помощью метода форматирования, например метода ToString значения даты и времени или метода String.Format.In contrast, retrieving the weekday name is a formatting operation that can be performed by calling a formatting method, such as a date and time value's ToString method or the String.Format method. В этом разделе показано, как выполнить эти операции форматирования.This topic shows how to perform these formatting operations.

Извлечение числа, обозначающего день недели, из определенной датыTo extract a number indicating the day of the week from a specific date

  1. Если вы работаете со строковым представлением даты, преобразуйте ее в значение типа DateTime или DateTimeOffset, используя статичный метод DateTime.Parse или DateTimeOffset.Parse.If you are working with the string representation of a date, convert it to a DateTime or a DateTimeOffset value by using the static DateTime.Parse or DateTimeOffset.Parse method.

  2. Используйте свойство DateTime.DayOfWeek или DateTimeOffset.DayOfWeek для получения значения типа DayOfWeek, которое указывает день недели.Use the DateTime.DayOfWeek or DateTimeOffset.DayOfWeek property to retrieve a DayOfWeek value that indicates the day of the week.

  3. При необходимости приведите (в C#) или преобразуйте (в Visual Basic) значение DayOfWeek в целочисленный тип.If necessary, cast (in C#) or convert (in Visual Basic) the DayOfWeek value to an integer.

Следующий пример отображает целое число, представляющее день недели для определенной даты.The following example displays an integer that represents the day of the week of a specific date.

using System;

public class Example
{
   public static void Main()
   {
      DateTime dateValue = new DateTime(2008, 6, 11);
      Console.WriteLine((int) dateValue.DayOfWeek);      
   }
}
// The example displays the following output:
//       3
Module Example
   Public Sub Main()
      Dim dateValue As Date = #6/11/2008#
      Console.WriteLine(dateValue.DayOfWeek)           
   End Sub
End Module
' The example displays the following output:
'    3

Извлечение сокращенного названия дня недели из определенной датыTo extract the abbreviated weekday name from a specific date

  1. Если вы работаете со строковым представлением даты, преобразуйте ее в значение типа DateTime или DateTimeOffset, используя статичный метод DateTime.Parse или DateTimeOffset.Parse.If you are working with the string representation of a date, convert it to a DateTime or a DateTimeOffset value by using the static DateTime.Parse or DateTimeOffset.Parse method.

  2. Вы можете извлечь сокращенное название дня недели для текущих или заданных региональных параметров:You can extract the abbreviated weekday name of the current culture or of a specific culture:

    1. Чтобы извлечь сокращенное название дня недели для текущих региональных параметров, вызовите метод DateTime.ToString(String) значения даты и времени или метод экземпляра DateTimeOffset.ToString(String) и передайте строку "ddd" в параметре format.To extract the abbreviated weekday name for the current culture, call the date and time value's DateTime.ToString(String) or DateTimeOffset.ToString(String) instance method, and pass the string "ddd" as the format parameter. В следующем примере показано использование метода ToString(String).The following example illustrates the call to the ToString(String) method.

      using System;
      
      public class Example
      {
         public static void Main()
         {
            DateTime dateValue = new DateTime(2008, 6, 11);
            Console.WriteLine(dateValue.ToString("ddd"));   
         }
      }
      // The example displays the following output:
       //       Wed
      
      Module Example
         Public Sub Main()
            Dim dateValue As Date = #6/11/2008#
            Console.WriteLine(dateValue.ToString("ddd"))    
         End Sub
      End Module
      ' The example displays the following output:
      '       Wed
      
    2. Чтобы извлечь сокращенное название дня недели для заданных региональных параметров, вызовите метод DateTime.ToString(String, IFormatProvider) значения даты и времени или метод экземпляра DateTimeOffset.ToString(String, IFormatProvider).To extract the abbreviated weekday name for a specific culture, call the date and time value’s DateTime.ToString(String, IFormatProvider) or DateTimeOffset.ToString(String, IFormatProvider) instance method. Передайте строку "ddd" в параметре format.Pass the string "ddd" as the format parameter. Передайте объект CultureInfo или DateTimeFormatInfo, представляющий региональные параметры, для которых требуется получить название дня недели, в параметре provider.Pass either a CultureInfo or a DateTimeFormatInfo object that represents the culture whose weekday name you want to retrieve as the provider parameter. В следующем коде показан вызов метода ToString(String, IFormatProvider) с использованием объекта CultureInfo, представляющего региональные параметры fr-FR.The following code illustrates a call to the ToString(String, IFormatProvider) method using a CultureInfo object that represents the fr-FR culture.

      using System;
      using System.Globalization;
      
      public class Example
      {
         public static void Main()
         {
            DateTime dateValue = new DateTime(2008, 6, 11);
            Console.WriteLine(dateValue.ToString("ddd", 
                              new CultureInfo("fr-FR")));    
         }
      }
      // The example displays the following output:
      //       mer.  
      
      Imports System.Globalization
      
      Module Example
         Public Sub Main()
            Dim dateValue As Date = #6/11/2008#
            Console.WriteLine(dateValue.ToString("ddd", 
                              New CultureInfo("fr-FR")))    
         End Sub
      End Module
      ' The example displays the following output:
      '       mer.
      

Извлечение полного названия дня недели из определенной датыTo extract the full weekday name from a specific date

  1. Если вы работаете со строковым представлением даты, преобразуйте ее в значение типа DateTime или DateTimeOffset, используя статичный метод DateTime.Parse или DateTimeOffset.Parse.If you are working with the string representation of a date, convert it to a DateTime or a DateTimeOffset value by using the static DateTime.Parse or DateTimeOffset.Parse method.

  2. Вы можете извлечь полное название дня недели для текущих или заданных региональных параметров:You can extract the full weekday name of the current culture or of a specific culture:

    1. Чтобы извлечь полное название дня недели для текущих региональных параметров, вызовите метод DateTime.ToString(String) значения даты и времени или метод экземпляра DateTimeOffset.ToString(String) и передайте строку "dddd" в параметре format.To extract the weekday name for the current culture, call the date and time value’s DateTime.ToString(String) or DateTimeOffset.ToString(String) instance method, and pass the string "dddd" as the format parameter. В следующем примере показано использование метода ToString(String).The following example illustrates the call to the ToString(String) method.

      using System;
      
      public class Example
      {
         public static void Main()
         {
            DateTime dateValue = new DateTime(2008, 6, 11);
            Console.WriteLine(dateValue.ToString("dddd"));    
         }
      }
      // The example displays the following output:
      //       Wednesday
      
      Module Example
         Public Sub Main()
            Dim dateValue As Date = #6/11/2008#
            Console.WriteLine(dateValue.ToString("dddd"))
         End Sub
      End Module
      ' The example displays the following output:
      '       Wednesday
      
    2. Чтобы извлечь полное название дня недели для заданных региональных параметров, вызовите метод DateTime.ToString(String, IFormatProvider) значения даты и времени или метод экземпляра DateTimeOffset.ToString(String, IFormatProvider).To extract the weekday name for a specific culture, call the date and time value’s DateTime.ToString(String, IFormatProvider) or DateTimeOffset.ToString(String, IFormatProvider) instance method. Передайте строку "dddd" в параметре format.Pass the string "dddd" as the format parameter. Передайте объект CultureInfo или DateTimeFormatInfo, представляющий региональные параметры, для которых требуется получить название дня недели, в параметре provider.Pass either a CultureInfo or a DateTimeFormatInfo object that represents the culture whose weekday name you want to retrieve as the provider parameter. В следующем коде показан вызов метода ToString(String, IFormatProvider) с использованием объекта CultureInfo, представляющего региональные параметры es-ES.The following code illustrates a call to the ToString(String, IFormatProvider) method using a CultureInfo object that represents the es-ES culture.

      using System;
      using System.Globalization;
      
      public class Example
      {
         public static void Main()
         {
            DateTime dateValue = new DateTime(2008, 6, 11);
            Console.WriteLine(dateValue.ToString("dddd", 
                              new CultureInfo("es-ES")));    
         }
      }
      // The example displays the following output:
      //       miércoles.
      
      Imports System.Globalization
      
      Module Example
         Public Sub Main()
            Dim dateValue As Date = #6/11/2008#
            Console.WriteLine(dateValue.ToString("dddd", _
                              New CultureInfo("es-ES")))     
         End Sub
      End Module
      ' The example displays the following output:
      '       miércoles.
      

ПримерExample

В этом примере показаны вызовы свойств DateTime.DayOfWeek и DateTimeOffset.DayOfWeek, а также методов DateTime.ToString и DateTimeOffset.ToString для получения числа, представляющего день недели, сокращенное и полное название дня недели для определенной даты.The example illustrates calls to the DateTime.DayOfWeek and DateTimeOffset.DayOfWeek properties and the DateTime.ToString and DateTimeOffset.ToString methods to retrieve the number that represents the day of the week, the abbreviated weekday name, and the full weekday name for a particular date.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      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:
//       1
//       1
//       Mon
//       Mon
//       Monday
//       Monday
//       Mo
//       Mo
//       Mo
//       Mo
//       lun.
//       lun.
//       lundi
//       lundi
Imports System.Globalization

Module Example
   Public Sub Main()
      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
   End Sub
End Module
' 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.Individual languages may provide functionality that duplicates or supplements the functionality provided by the .NET Framework. Например, Visual Basic предоставляет две такие функции:For example, Visual Basic includes two such functions:

  • Weekday, которая возвращает число, обозначающее день недели для определенной даты.Weekday, which returns a number that indicates the day of the week of a particular date. Функция считает порядковое значение первого дня недели равным 1, а свойство DateTime.DayOfWeek — равным 0.It considers the ordinal value of the first day of the week to be one, whereas the DateTime.DayOfWeek property considers it to be zero.

  • WeekdayName, которая возвращает название дня недели для текущих региональных параметров, которое соответствует определенному номеру дня недели.WeekdayName, which returns the name of the week in the current culture that corresponds to a particular weekday number.

В следующем примере показано использование функций Weekday и WeekdayName Visual Basic.The following example illustrates the use of the Visual Basic Weekday and WeekdayName functions.

Imports System.Globalization
Imports System.Threading

Module Example
   Public Sub Main()
      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   
   End Sub
End Module

Вы также можете использовать значение, возвращенное свойством DateTime.DayOfWeek, для получения названия дня недели для определенной даты.You can also use the value returned by the DateTime.DayOfWeek property to retrieve the weekday name of a particular date. Для этого требуется просто вызвать метод ToString для значения DayOfWeek, возвращенного свойством.This requires only a call to the ToString method on the DayOfWeek value returned by the property. Однако этот способ не позволяет получить локализованное название дня недели для текущих региональных параметров, как показано в следующем примере.However, this technique does not produce a localized weekday name for the current culture, as the following example illustrates.

using System;
using System.Globalization;
using System.Threading;

public class Example
{
   public static void Main()
   {
      // 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());   
      // Restore original current culture
      Thread.CurrentThread.CurrentCulture = originalCulture;
   }
}
// The example displays the following output:
//       Wednesday
Imports System.Globalization
Imports System.Threading

Module Example
   Public Sub Main()
      ' 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())     
      ' Restore original current culture
      Thread.CurrentThread.CurrentCulture = originalCulture
   End Sub
End Module
' The example displays the following output:
'       Wednesday

См. такжеSee also