Équivalent de WeekDay Fonction de VB6 en C #
Question
Dans le code VB6, j'ai les éléments suivants:
dim I as Long
I = Weekday(Now, vbFriday)
Je veux l'équivalent en C #. Quelqu'un peut-il aider?
La solution
public static int Weekday(DateTime dt, DayOfWeek startOfWeek)
{
return (dt.DayOfWeek - startOfWeek + 7) % 7;
}
Ceci peut être appelé avec:
DateTime dt = DateTime.Now;
Console.WriteLine(Weekday(dt, DayOfWeek.Friday));
Les sorties ci-dessus:
4
comme mardi est 4 jours après vendredi.
Autres conseils
Vous voulez dire la propriété DateTime.DayOfWeek ?
DayOfWeek dow = DateTime.Now.DayOfWeek;
Oui, chaque valeur DateTime a une propriété intégrée appelée DayOfWeek qui renvoie une énumération du même nom ...
DayOfWeek dow = DateTime.Now.DayOfWeek;
Si vous voulez que la valeur intégrale transforme simplement la valeur d’énumération en int.
int dow = (int)(DateTime.Now.DayOfWeek);
Vous devrez ajouter une constante de 1 à 6 et faire Mod 7 pour le réaligner sur un autre jour que dimanche, cependant ...
Je ne pense pas qu'il existe un équivalent de la forme à deux arguments de la fonction Weekday de VB.
Vous pouvez l'imiter 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, appelez-le comme suit:
int i = Weekday(DateTime.Now, DayOfWeek.Friday);
Il renvoie 4 aujourd'hui, mardi étant à 4 jours après vendredi.