我正在将旧的VB6项目迁移到C#中。从当前日期获取星期几,并指定星期的第一天
我想从下面的表达获得在C#中的等价物:
Weekday(Date, vbMonday)
我知道有一个在C#中的函数:
int dayOfWeek = (int)DateTime.Today.DayOfWeek;
但如何指定一周的第一天是星期一,然后函数DayOfWeek考虑它并返回正确的值?
我需要获取一个int值。
我正在将旧的VB6项目迁移到C#中。从当前日期获取星期几,并指定星期的第一天
我想从下面的表达获得在C#中的等价物:
Weekday(Date, vbMonday)
我知道有一个在C#中的函数:
int dayOfWeek = (int)DateTime.Today.DayOfWeek;
但如何指定一周的第一天是星期一,然后函数DayOfWeek考虑它并返回正确的值?
我需要获取一个int值。
你可以通过调用CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek
获得一周的第一天,但我认为你可以没有做到这一点。
的Weekday
功能星期一返回1,就像DayOfWeek
。唯一的特例是星期天,这.NET收益为0
,而VB返回7.
只是做数学题:
int dayOfWeek = DateTime.Today.DayOfWeek == DayOfWeek.Sunday
? 7
: (int)DateTime.Today.DayOfWeek;
你确定吗?从msdn文档:https://msdn.microsoft.com/en-us/library/82yfs2zh(v=vs.90).aspx在星期日vb6是1,星期一2和星期六7,如果你没有指定的第一天周作为WeekDay函数中的参数,默认情况下,星期几的第一天是星期日。在我的示例中,通过在WeekDay函数中使用参数指定周一的第一个星期几为星期一,所以星期一为1,星期二为2,星期日为7,这就是我的理解。 – user1624552
是的,但你将它设置为'Monday = 1',这就是为什么它是1(所以你偏离文档)。 –
好了,在.NET你不指定一周的第一天,就被默认设置为星期日,所以周日是0,周一是1,2日星期二,......,星期六6 – user1624552
DateTime dateValue = new DateTime(2008, 6, 11);
Console.WriteLine((int) dateValue.DayOfWeek);
//中的例子显示以下输出: // 3
Console.WriteLine(dateValue.ToString("dddd"));
//中的例子显示如下输出: //星期三
Console.WriteLine(dateValue.ToString("dddd"));
//中的例子显示的输出如下:// 周三
这真的不清楚你的目标达到的目标。 DayOfWeek属性返回一个DayOfWeek枚举值 - 不受这一周的第一天的影响。你期望得到什么样的价值? –