C# VB6在C中的平日函数等价#

C# VB6在C中的平日函数等价#,c#,datetime,vb6,dayofweek,weekday,C#,Datetime,Vb6,Dayofweek,Weekday,在VB6代码中,我有以下内容: dim I as Long I = Weekday(Now, vbFriday) 我想要C#的等价物。有人能帮忙吗?你是说酒店吗 DayOfWeek dow = DateTime.Now.DayOfWeek; 是的,每个DateTime值都有一个名为DayOfWeek的内置属性,该属性返回一个同名的枚举 DayOfWeek dow = DateTime.Now.DayOfWeek; 如果需要整数值,只需将枚举值强制转换为int int dow = (i

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

dim I as Long 

I = Weekday(Now, vbFriday) 
我想要C#的等价物。有人能帮忙吗?

你是说酒店吗

DayOfWeek dow = DateTime.Now.DayOfWeek;

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

DayOfWeek dow = DateTime.Now.DayOfWeek;
如果需要整数值,只需将枚举值强制转换为int

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

你必须添加一个从1到6的常数,然后执行Mod 7将其重新对齐到周日以外的另一天,但是

我认为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;
}
今天返回4,因为星期二是星期五之后的4天

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

VB6(和VB.NET)函数的返回值是以1为基础的<代码>返回((dt.DayOfWeek-startOfWeek+7)%7)+1
public static int Weekday(DateTime dt, DayOfWeek startOfWeek)
{
    return (dt.DayOfWeek - startOfWeek + 7) % 7;
}