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