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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top