Condividi tramite


Procedura: estrarre il giorno della settimana da una data specifica

Aggiornamento: novembre 2007

.NET Framework consente di determinare in modo semplice il giorno ordinale della settimana per una determinata data, nonché visualizzare il nome della settimana localizzato per una determinata data. Un valore enumerato che indica il giorno della settimana corrispondente a una particolare data è specificato dalla proprietà DayOfWeek o DayOfWeek. Al contrario, il recupero del nome del giorno della settimana è un'operazione di formattazione che può essere eseguita chiamando un metodo di formattazione, ad esempio il metodo ToString o il metodo String.Format di un valore di data e ora. In questo argomento viene illustrato come eseguire queste operazioni di formattazione.

Per estrarre un numero che indica il giorno della settimana da una data specifica

  1. Se si sta lavorando alla rappresentazione di stringa di una data, convertirla in un valore DateTime o in un valore DateTimeOffset utilizzando il metodo statico DateTime.Parse o DateTimeOffset.Parse.

  2. Utilizzare la proprietà DateTime.DayOfWeek o DateTimeOffset.DayOfWeek per recuperare un valore DayOfWeek che indica il giorno della settimana.

  3. Se necessario, eseguire il cast (in C#) o convertire (in Visual Basic) il valore DayOfWeek in un numero intero.

Nell'esempio seguente viene visualizzato un numero intero che rappresenta il giorno della settimana dalla rappresentazione di stringa di una data.

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

Per estrarre il nome del giorno della settimana abbreviato da una data specifica

  1. Se si sta lavorando alla rappresentazione di stringa di una data, convertirla in un valore DateTime o in un valore DateTimeOffset utilizzando il metodo statico DateTime.Parse o DateTimeOffset.Parse.

  2. È possibile estrarre il nome del giorno della settimana abbreviato per le impostazioni cultura correnti o per impostazioni cultura specifiche:

    1. Per estrarre il nome del giorno della settimana abbreviato per le impostazioni cultura correnti, chiamare il metodo di istanza DateTime.ToString(String) o DateTimeOffset.ToString(String) del valore di data e ora e passare la stringa "ddd" come parametro format. Nell'esempio seguente viene illustrata la chiamata al metodo 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. Per estrarre il nome del giorno della settimana abbreviato per impostazioni cultura specifiche, chiamare il metodo di istanza DateTime.ToString(String, IFormatProvider) o DateTimeOffset.ToString(String, IFormatProvider) del valore di data e ora. Passare la stringa "ddd" come parametro format. Passare un oggetto CultureInfo o DateTimeFormatInfo che rappresenta le impostazioni cultura il cui nome del giorno della settimana si desidera recuperare come parametro provider. Nel codice seguente è illustrata una chiamata al metodo ToString(String, IFormatProvider) utilizzando un oggetto CultureInfo che rappresenta le impostazioni cultura 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.
      

Per estrarre il nome del giorno della settimana completo da una data specifica

  1. Se si sta lavorando alla rappresentazione di stringa di una data, convertirla in un valore DateTime o in un valore DateTimeOffset utilizzando il metodo statico DateTime.Parse o DateTimeOffset.Parse.

  2. È possibile estrarre il nome del giorno della settimana completo per le impostazioni cultura correnti o per impostazioni cultura specifiche:

    1. Per estrarre il nome del giorno della settimana completo per le impostazioni cultura correnti, chiamare il metodo di istanza DateTime.ToString(String) o DateTimeOffset.ToString(String) del valore di data e ora e passare la stringa "dddd" come parametro format. Nell'esempio seguente viene illustrata la chiamata al metodo 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. Per estrarre il nome del giorno della settimana completo per impostazioni cultura specifiche, chiamare il metodo di istanza DateTime.ToString(String, IFormatProvider) o DateTimeOffset.ToString(String, IFormatProvider) del valore di data e ora. Passare la stringa "dddd" come parametro format. Passare un oggetto CultureInfo o DateTimeFormatInfo che rappresenta le impostazioni cultura il cui nome del giorno della settimana si desidera recuperare come parametro provider. Nel codice seguente è illustrata una chiamata al metodo ToString(String, IFormatProvider) utilizzando un oggetto CultureInfo che rappresenta le impostazioni cultura es-ES.

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

Esempio

Nell'esempio sono illustrate le chiamate alle proprietà DateTime.DayOfWeek e DateTimeOffset.DayOfWeek e i metodi DateTime.ToString e DateTimeOffset.ToString per recuperare il numero che rappresenta il giorno della settimana, il nome del giorno della settimana abbreviato e il nome del giorno della settimana completo per una particolare data.

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

Singoli linguaggi possono fornire funzionalità che duplicano o integrano le funzionalità disponibili in .NET Framework. Visual Basic include ad esempio due funzioni di questo tipo:

  • Weekday, che restituisce un numero che indica il giorno della settimana di una particolare data. Questa funzione considera il valore ordinale del primo giorno della settimana come uno, mentre la proprietà DateTime.DayOfWeek lo considera come zero.

  • WeekdayName, che restituisce il nome della settimana nelle impostazioni cultura correnti, corrispondente a un numero del giorno della settimana particolare.

Nell'esempio riportato di seguito viene illustrato l'utilizzo delle funzioni Weekday e WeekdayName di Visual Basic.

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   

Per recuperare il nome del giorno della settimana di una data particolare è anche possibile utilizzare il valore restituito dalla proprietà DateTime.DayOfWeek. In questo caso è necessaria solo una chiamata al metodo ToString sul valore DayOfWeek restituito dalla proprietà. Questa tecnica, tuttavia, non produce un nome del giorno della settimana localizzato per le impostazioni cultura correnti, come illustrato nell'esempio seguente.

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

Compilazione del codice

Gli esempi potrebbero richiedere:

  • L'importazione degli spazi dei nomi seguenti:

Gli esempi precedenti richiedono inoltre:

  • L'aggiunta di un riferimento a System.Core.dll nei progetti ai quali vengono inseriti gli esempi di codice.

Vedere anche

Concetti

Procedure relative alla formattazione

Stringhe di formato di data e ora

Stringhe di formato data e ora standard

Stringhe di formato data e ora personalizzate