2008-12-30 21 views

Respuesta

12
public static int Weekday(DateTime dt, DayOfWeek startOfWeek) 
{ 
    return (dt.DayOfWeek - startOfWeek + 7) % 7; 
} 

Esto puede ser llamado usando:

DateTime dt = DateTime.Now; 
Console.WriteLine(Weekday(dt, DayOfWeek.Friday)); 

Las salidas anteriores:

4 

como el martes es de 4 días después del viernes.

+3

El valor de retorno de la función VB6 (y VB.NET) está basado en 1. 'return ((dt.DayOfWeek - startOfWeek + 7)% 7) + 1;' – 300hp

2

Sí, cada valor DateTime ha construido en un propiedad llamada DayOfWeek que devuelve una enumeración del mismo nombre ...

DayOfWeek dow = DateTime.Now.DayOfWeek; 

Si desea que el valor integral acaba de convertir el valor a una enumeración En t.

int dow = (int)(DateTime.Now.DayOfWeek); 

Vas a tener que añadir una constante de 1 a 6 y 7 a hacer Mod realinea para otro día, además de domingo, sin embargo ...

1

No creo que hay un equivalente de la forma de dos argumentos de la función de día de semana de VB.

Puedes emularlo usando algo como esto;

private static int Weekday(DateTime date, DayOfWeek startDay) 
{ 
    int diff; 
    DayOfWeek dow = date.DayOfWeek; 
    diff = dow - startDay; 
    if (diff < 0) 
    { 
     diff += 7; 
    } 
    return diff; 
} 

Entonces llamándolo así:

int i = Weekday(DateTime.Now, DayOfWeek.Friday); 

Devuelve 4 por hoy, como el martes es de 4 días después del viernes.

Cuestiones relacionadas