Partager via


Comment : extraire le jour de la semaine à partir d'une date spécifique

Le .NET Framework permet de déterminer aisément le jour ordinal de la semaine pour une date particulière et d'afficher le nom localisé du jour de la semaine pour une date particulière. Une valeur énumérée qui indique le jour de la semaine correspondant à une date particulière est disponible à partir de la propriété DayOfWeek ou DayOfWeek. En revanche, la récupération du nom du jour de la semaine est une opération de mise en forme qui peut être effectuée en appelant une méthode de mise en forme, telle que la méthode ToString d'une valeur de date et d'heure ou la méthode String.Format. Cette rubrique indique comment effectuer ces opérations de mise en forme.

Pour extraire un nombre indiquant le jour de la semaine à partir d'une date spécifique

  1. Si vous utilisez la représentation sous forme de chaîne d'une date, convertissez-la en une valeur DateTime ou DateTimeOffset à l'aide de la méthode statique DateTime.Parse ou DateTimeOffset.Parse.

  2. Utilisez la propriété DateTime.DayOfWeek ou DateTimeOffset.DayOfWeek pour récupérer une valeur DayOfWeek qui indique le jour de la semaine.

  3. Si nécessaire, effectuez un cast (en C#) ou convertissez (en Visual Basic) la valeur DayOfWeek en un entier.

L'exemple suivant affiche un entier qui représente le jour de la semaine à partir de la représentation sous forme de chaîne d'une date.

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

Pour extraire le nom abrégé du jour de la semaine à partir d'une date spécifique

  1. Si vous utilisez la représentation sous forme de chaîne d'une date, convertissez-la en une valeur DateTime ou DateTimeOffset à l'aide de la méthode statique DateTime.Parse ou DateTimeOffset.Parse.

  2. Vous pouvez extraire le nom abrégé du jour de la semaine de la culture actuelle ou d'une culture spécifique :

    1. Pour extraire le nom abrégé du jour de la semaine pour la culture actuelle, appelez la méthode d'instance DateTime.ToString(String) ou DateTimeOffset.ToString(String) de la valeur de date et d'heure et passez la chaîne "ddd" comme paramètre format. L'exemple ci-dessous illustre l'appel de la méthode 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. Pour extraire le nom abrégé du jour de la semaine pour une culture spécifique, appelez la méthode d'instance DateTime.ToString(String, IFormatProvider) ou DateTimeOffset.ToString(String, IFormatProvider) de la valeur de date et d'heure. Passez la chaîne "ddd" comme paramètre format. Passez un objet CultureInfo ou DateTimeFormatInfo qui représente la culture dont vous souhaitez récupérer le nom du jour de la semaine comme paramètre provider. Le code suivant illustre un appel à la méthode ToString(String, IFormatProvider) à l'aide d'un objet CultureInfo qui représente la culture fr-FR.

      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.
      

Pour extraire le nom complet du jour de la semaine à partir d'une date spécifique

  1. Si vous utilisez la représentation sous forme de chaîne d'une date, convertissez-la en une valeur DateTime ou DateTimeOffset à l'aide de la méthode statique DateTime.Parse ou DateTimeOffset.Parse.

  2. Vous pouvez extraire le nom complet du jour de la semaine de la culture actuelle ou d'une culture spécifique :

    1. Pour extraire le nom du jour de la semaine pour la culture actuelle, appelez la méthode d'instance DateTime.ToString(String) ou DateTimeOffset.ToString(String) de la valeur de date et d'heure et passez la chaîne "dddd" comme paramètre format. L'exemple ci-dessous illustre l'appel de la méthode 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. Pour extraire le nom du jour de la semaine pour une culture spécifique, appelez la méthode d'instance DateTime.ToString(String, IFormatProvider) ou DateTimeOffset.ToString(String, IFormatProvider) de la valeur de date et d'heure. Passez la chaîne "dddd" comme paramètre format. Passez un objet CultureInfo ou DateTimeFormatInfo qui représente la culture dont vous souhaitez récupérer le nom du jour de la semaine comme paramètre provider. Le code suivant illustre un appel à la méthode ToString(String, IFormatProvider) à l'aide d'un objet CultureInfo qui représente la culture es-ES.

      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.
      

Exemple

L'exemple illustre des appels aux propriétés DateTime.DayOfWeek et DateTimeOffset.DayOfWeek et aux méthodes DateTime.ToString et DateTimeOffset.ToString pour récupérer le nombre qui représente le jour de la semaine, le nom abrégé du jour de la semaine et le nom complet du jour de la semaine pour une date particulière.

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

Les langage individuels peuvent fournir des fonctionnalités qui dupliquent ou complètent celles fournies par le .NET Framework. Par exemple, Visual Basic inclut deux fonctions de ce type :

  • Weekday qui retourne un nombre indiquant le jour de la semaine d'une date particulière. Cette fonction considère que la valeur ordinale du premier jour de la semaine est égale à un tandis que la propriété DateTime.DayOfWeek considère qu'elle est nulle.

  • WeekdayName qui retourne le nom de la semaine dans la culture actuelle qui correspond à un numéro du jour de la semaine particulier.

L'exemple suivant illustre l'utilisation des fonctions Visual Basic Weekday et 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   

Vous pouvez également utiliser la valeur retournée par la propriété DateTime.DayOfWeek pour récupérer le nom du jour de la semaine d'une date particulière. Il suffit d'effectuer un appel à la méthode ToString sur la valeur DayOfWeek retournée par la propriété. Toutefois, cette technique n'affiche pas le nom localisé du jour de la semaine pour la culture actuelle, comme l'illustre l'exemple suivant.

' 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;

Compilation du code

Ces exemples nécessitent éventuellement :

  • que les espaces de noms suivants soient importés :

L'exemple requiert également :

  • qu'une référence à System.Core.dll soit ajoutée à tout projet auquel les exemples de code sont ajoutés.

Voir aussi

Concepts

Exécution d'opérations de mise en forme

Chaînes de format de date et d'heure standard

Chaînes de format de date et d'heure personnalisées