C6中VB6的WeekDay函数的等价性

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

dim I as Long I = Weekday(Now, vbFriday) 

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

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

你的意思是DateTime.DayOfWeek属性?

 DayOfWeek dow = DateTime.Now.DayOfWeek; 

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

 DayOfWeek dow = DateTime.Now.DayOfWeek; 

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

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

你必须添加一个从1到6的常量,然后使用Mod 7将它重新排列到星期日以外的另一天,但是…

我不认为VB的工作日函数有两种forms。

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

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