Equivalente à função do dia da semana do VB6 em C#
Pergunta
No código VB6, eu tenho o seguinte:
dim I as Long
I = Weekday(Now, vbFriday)
Eu quero o equivalente em C#. Alguém pode ajudar?
Solução
public static int Weekday(DateTime dt, DayOfWeek startOfWeek)
{
return (dt.DayOfWeek - startOfWeek + 7) % 7;
}
Isso pode ser chamado usando:
DateTime dt = DateTime.Now;
Console.WriteLine(Weekday(dt, DayOfWeek.Friday));
As saídas acima:
4
Como terça -feira é 4 dias após sexta -feira.
Outras dicas
Você quer dizer o DateTime.DayofWeek propriedade?
DayOfWeek dow = DateTime.Now.DayOfWeek;
Sim, cada valor de tempo de dados tem uma propriedade incorporada chamada DayOfWeek que retorna uma enumeração de mesmo nome ...
DayOfWeek dow = DateTime.Now.DayOfWeek;
Se você deseja que o valor integral basta lançar o valor de enumeração em um int.
int dow = (int)(DateTime.Now.DayOfWeek);
Você terá que adicionar uma constante de 1 a 6 e fazer o mod 7 para realinhar para outro dia além do domingo, no entanto ...
Eu não acho que exista um equivalente à forma de dois argumentos da função do dia da semana do VB.
Você pode imitá -lo usando algo assim;
private static int Weekday(DateTime date, DayOfWeek startDay)
{
int diff;
DayOfWeek dow = date.DayOfWeek;
diff = dow - startDay;
if (diff < 0)
{
diff += 7;
}
return diff;
}
Então chamando assim:
int i = Weekday(DateTime.Now, DayOfWeek.Friday);
Retorna 4 para hoje, pois terça -feira é 4 dias após sexta -feira.