2008-12-30 222 views
6

在VB6代码VB6的工作日功能的,我有以下几点:相当于C#

dim I as Long 

I = Weekday(Now, vbFriday) 

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

回答

12
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

VB6(和VB.NET)函数的返回值是1。 `((DT.DayOfWeek - startOfWeek + 7)%7)+ 1;` – 300hp 2012-09-19 18:56:53

2

是的,每个日期时间值有一个内置的属性称为DAYOFWEEK返回同名的枚举...

DayOfWeek dow = DateTime.Now.DayOfWeek; 

如果你想在积分值只投枚举值的INT。

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

你必须从1添加一个常数6,做国防部7然而,它重新调整到周日之外另一天,...

1

我不认为这是一个等价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日(星期五)之后。