2008-12-30 9 views

Répondre

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

Cela peut être appelé à l'aide:

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

Les sorties ci-dessus:

4 

que mardi est de 4 jours après le vendredi.

+3

La valeur de retour de la fonction VB6 (et VB.NET) est basée sur 1. 'return ((dt.DayOfWeek - startOfWeek + 7)% 7) + 1;' – 300hp

3

Vous voulez dire la propriété DateTime.DayOfWeek?

DayOfWeek dow = DateTime.Now.DayOfWeek; 
2

Oui, chaque valeur DateTime a construit dans la propriété appelée DayOfWeek qui retourne une énumération du même nom ...

DayOfWeek dow = DateTime.Now.DayOfWeek; 

Si vous voulez que la valeur intégrale Reportez-vous seulement la valeur d'énumération à une int.

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

Vous devez ajouter une constante de 1 à 6 et faire Mod 7 pour réaligner à un autre jour en plus dimanche, mais ...

1

Je ne pense pas qu'il y ait un équivalent de la forme à deux arguments de la fonction Weekday de VB.

Vous pouvez l'émuler en utilisant quelque chose comme ceci;

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

Puis l'appeler comme ceci:

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

Il retourne 4 aujourd'hui, comme mardi est de 4 jours après le vendredi.