Эквивалент функции WeekDay VB6 в C # - PullRequest
6 голосов
/ 30 декабря 2008

В коде VB6 у меня есть следующее:

dim I as Long 

I = Weekday(Now, vbFriday) 

Я хочу эквивалент в C #. Может ли кто-нибудь помочь?

Ответы [ 4 ]

12 голосов
/ 30 декабря 2008
public static int Weekday(DateTime dt, DayOfWeek startOfWeek)
{
    return (dt.DayOfWeek - startOfWeek + 7) % 7;
}

Это можно вызвать с помощью:

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

Вышеуказанные выходы:

4

во вторник через 4 дня после пятницы.

3 голосов
/ 30 декабря 2008

Вы имеете в виду свойство DateTime.DayOfWeek ?

DayOfWeek dow = DateTime.Now.DayOfWeek;
2 голосов
/ 30 декабря 2008

Да, каждое значение DateTime имеет встроенное свойство DayOfWeek, которое возвращает перечисление с тем же именем ...

DayOfWeek dow = DateTime.Now.DayOfWeek;

Если вы хотите получить целочисленное значение, просто приведите значение перечисления к int.

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

Вам нужно будет добавить константу от 1 до 6 и выполнить Mod 7, чтобы перестроить ее в другой день, кроме воскресенья, однако ...

1 голос
/ 30 декабря 2008

Я не думаю, что есть эквивалент формы двух аргументов функции Weekday от VB.

Вы можете подражать ему, используя что-то вроде этого;

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

Тогда называя это так:

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

На сегодня возвращается 4, так как во вторник через 4 дня после пятницы.

...