Procedimiento para extraer el día de la semana de una fecha concreta
.NET permite determinar fácilmente el número de día de la semana correspondiente a una fecha concreta, así como mostrar el nombre localizado del día de la semana para una fecha en particular. Las propiedades DayOfWeek o DayOfWeek proporcionan un valor enumerado que indica el día de la semana correspondiente a una fecha concreta. Por el contrario, la recuperación del nombre del día de la semana es una operación de formato que puede realizarse con una llamada a un método de formato como, por ejemplo, un método ToString
de un valor de fecha y hora o un método String.Format. En este tema se muestra cómo realizar estas operaciones de formato.
Extracción de un número que indica el día de la semana
Utilice el método estático DateTime.Parse o DateTimeOffset.Parse para convertir la representación de cadena de una fecha en un valor DateTime o DateTimeOffset.
Use las propiedades DateTime.DayOfWeek o DateTimeOffset.DayOfWeek para recuperar un valor DayOfWeek que indique el día de la semana.
En caso necesario, convierta (en C# o en Visual Basic) el valor DayOfWeek en un entero.
En el siguiente ejemplo se muestra un entero que representa el día de la semana de una fecha concreta:
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
Extracción del nombre abreviado del día de la semana
Utilice el método estático DateTime.Parse o DateTimeOffset.Parse para convertir la representación de cadena de una fecha en un valor DateTime o DateTimeOffset.
Puede obtener el nombre abreviado de un día de la semana de la referencia cultural actual o de una referencia cultural específica:
Para obtener el nombre abreviado del día laborable en la referencia cultural actual, llame al método de instancia DateTime.ToString(String) o DateTimeOffset.ToString(String) del valor de fecha y hora, y pase la cadena
ddd
como parámetroformat
. En el siguiente ejemplo se muestra la llamada al método 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
Para obtener el nombre abreviado del día de la semana de una referencia cultural específica, llame al método de instancia DateTime.ToString(String, IFormatProvider) o DateTimeOffset.ToString(String, IFormatProvider) del valor de fecha y hora. Pase la cadena
ddd
como parámetroformat
. Pase un objeto CultureInfo o DateTimeFormatInfo que represente la referencia cultural cuyo nombre del día de la semana desee recuperar como parámetroprovider
. En el siguiente código se muestra una llamada al método ToString(String, IFormatProvider) con un objeto CultureInfo que representa la referencia cultural 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.
Extracción del nombre completo del día de la semana
Utilice el método estático DateTime.Parse o DateTimeOffset.Parse para convertir la representación de cadena de una fecha en un valor DateTime o DateTimeOffset.
Puede obtener el nombre completo de un día de la semana de la referencia cultural actual o de una referencia cultural específica:
Para obtener el nombre del día laborable en la referencia cultural actual, llame al método de instancia DateTime.ToString(String) o DateTimeOffset.ToString(String) del valor de fecha y hora y pase la cadena
dddd
como parámetroformat
. En el siguiente ejemplo se muestra la llamada al método 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
Para obtener el nombre del día de la semana de una referencia cultural específica, llame al método de instancia DateTime.ToString(String, IFormatProvider) o DateTimeOffset.ToString(String, IFormatProvider) del valor de fecha y hora. Pase la cadena
dddd
como parámetroformat
. Pase un objeto CultureInfo o DateTimeFormatInfo que represente la referencia cultural cuyo nombre del día de la semana desee recuperar como parámetroprovider
. En el siguiente código se muestra una llamada al método ToString(String, IFormatProvider) con un objeto CultureInfo que representa la referencia cultural 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.
Ejemplo
En el siguiente ejemplo se muestran las llamadas a las propiedades DateTime.DayOfWeek y DateTimeOffset.DayOfWeek para recuperar el número que representa el día laborable de una fecha determinada. También incluye llamadas a los métodos DateTime.ToString y DateTimeOffset.ToString para extraer el nombre abreviado y el nombre completo del día laborable.
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
Puede haber lenguajes que ofrezcan una funcionalidad que duplique o complemente a la proporcionada por .NET. Por ejemplo, Visual Basic incluye dos funciones así:
Weekday
, que devuelve un número que indica el día de la semana a partir de una fecha específica. Considera que el valor ordinal del primer día de la semana es uno, mientras que la propiedad DateTime.DayOfWeek considera que es cero.WeekdayName
, que devuelve el nombre de la semana en la referencia cultural actual que corresponde a un número concreto del día de la semana.
En el ejemplo siguiente se muestra el uso de las funciones Weekday
y WeekdayName
de 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
También se puede usar el valor devuelto por la propiedad DateTime.DayOfWeek para recuperar el nombre del día de la semana de una fecha en particular. Este proceso solo requiere una llamada al método ToString en el valor DayOfWeek devuelto por la propiedad. Sin embargo, esta técnica no produce el nombre localizado de un día laborable en la referencia cultural actual, tal y como se muestra en el siguiente ejemplo:
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