7

在 VB6 代码中,我有以下内容:

dim I as Long 

I = Weekday(Now, vbFriday) 

我想要 C# 中的等价物。任何人都可以帮忙吗?

4

4 回答 4

15
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 天。

于 2008-12-30T15:05:44.930 回答
4

你的意思是DateTime.DayOfWeek属性?

DayOfWeek dow = DateTime.Now.DayOfWeek;
于 2008-12-30T14:43:07.083 回答
3

是的,每个 DateTime 值都有一个名为 DayOfWeek 的内置属性,它返回同名的枚举......

DayOfWeek dow = DateTime.Now.DayOfWeek;

如果您想要整数值,只需将枚举值转换为 int。

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

您必须添加一个从 1 到 6 的常数并执行 Mod 7 以将其重新调整到星期日以外的另一天,但是...

于 2008-12-30T14:44:04.133 回答
2

我不认为 VB 的 Weekday 函数有两个参数形式的等价物。

你可以用这样的东西来模拟它;

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 天。

于 2008-12-30T14:58:40.797 回答