Procedura: Estrarre il giorno della settimana da una data specifica
.NET consente di determinare facilmente il giorno ordinale della settimana per una determinata data e di visualizzare il nome localizzato del giorno della settimana per una determinata data. Valore enumerato che indica il giorno della settimana corrispondente a una determinata data è disponibile dalla proprietà DayOfWeek o DayOfWeek. Al contrario, il recupero del nome del giorno feriale è un'operazione di formattazione che può essere eseguita chiamando un metodo di formattazione, ad esempio il metodo di ToString
di un valore di data e ora o il metodo String.Format. Questo articolo illustra come eseguire queste operazioni di formattazione.
Estrarre un numero che indica il giorno della settimana
Utilizzare il metodo DateTime.Parse statico o DateTimeOffset.Parse per convertire la rappresentazione di stringa di una data in un DateTime o un valore DateTimeOffset.
Utilizzare la proprietà DateTime.DayOfWeek o DateTimeOffset.DayOfWeek per recuperare un valore DayOfWeek che indica il giorno della settimana.
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 di una data specifica:
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
Estrarre il nome abbreviato del giorno della settimana
Utilizzare il metodo DateTime.Parse statico o DateTimeOffset.Parse per convertire la rappresentazione di stringa di una data in un DateTime o un valore DateTimeOffset.
È possibile estrarre il nome abbreviato del giorno della settimana della cultura corrente o di una cultura specifica.
Per ottenere il nome abbreviato del giorno della settimana nella cultura corrente, chiamare il metodo di istanza DateTime.ToString(String) o DateTimeOffset.ToString(String) dell'oggetto di data e ora e passare la stringa
ddd
come parametroformat
. Nell'esempio seguente viene illustrata la chiamata al metodo ToString(String):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
Per estrarre il nome abbreviato del giorno della settimana per una cultura specifica, 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 parametroformat
. Passare un oggetto CultureInfo o DateTimeFormatInfo che rappresenta la cultura di cui si desidera recuperare il nome del giorno della settimana come parametroprovider
. Il codice seguente illustra una chiamata al metodo ToString(String, IFormatProvider) utilizzando un oggetto CultureInfo che rappresenta la cultura fr-FR.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.
Estrarre il nome completo del giorno della settimana
Utilizzare il metodo DateTime.Parse statico o DateTimeOffset.Parse per convertire la rappresentazione di stringa di una data in un DateTime o un valore DateTimeOffset.
È possibile estrarre il nome completo del giorno della settimana della cultura attuale o di una cultura specifica.
Per estrarre il nome del giorno della settimana per la cultura corrente, chiamare il metodo dell'istanza di data e ora DateTime.ToString(String) o DateTimeOffset.ToString(String) e passare la stringa
dddd
come parametroformat
. Nell'esempio seguente viene illustrata la chiamata al metodo ToString(String):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
Per estrarre il nome del giorno della settimana per una cultura specifica, 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 parametroformat
. Passa un oggetto CultureInfo o un oggetto DateTimeFormatInfo che rappresenta la cultura il cui nome del giorno della settimana vuoi recuperare come parametroprovider
. Il codice seguente illustra una chiamata al metodo ToString(String, IFormatProvider) utilizzando un oggetto CultureInfo che rappresenta la cultura es-ES.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.
Esempio
Nell'esempio seguente vengono illustrate le chiamate alle proprietà DateTime.DayOfWeek e DateTimeOffset.DayOfWeek per recuperare il numero che rappresenta il giorno della settimana per una data specifica. Include anche chiamate ai metodi DateTime.ToString e DateTimeOffset.ToString per estrarre il nome abbreviato del giorno della settimana e il nome completo del giorno della settimana.
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 {dateString} to a date.");
}
}
}
// 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
I singoli linguaggi possono fornire funzionalità che duplicano o integrano la funzionalità fornita da .NET. Ad esempio, Visual Basic include due funzioni di questo tipo:
Weekday
, che restituisce un numero che indica il giorno della settimana di una data specifica. Considera il valore ordinale del primo giorno della settimana come uno, mentre la proprietà DateTime.DayOfWeek lo considera zero.WeekdayName
, che restituisce il nome del giorno della settimana nella cultura attuale che corrisponde a un determinato numero del giorno della settimana.
Nell'esempio seguente viene illustrato l'uso delle funzioni di Weekday
e WeekdayName
di Visual Basic:
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
È anche possibile utilizzare il valore restituito dalla proprietà DateTime.DayOfWeek per recuperare il nome del giorno della settimana di una data specifica. Questo processo richiede soltanto una chiamata al metodo ToString sul valore restituito dalla proprietà DayOfWeek. Tuttavia, questa tecnica non produce un nome del giorno della settimana localizzato per la cultura corrente, come illustrato nell'esempio seguente.
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