2017-06-06 741 views
1

我正在将旧的VB6项目迁移到C#中。从当前日期获取星期几,并指定星期的第一天

我想从下面的表达获得在C#中的等价物:

Weekday(Date, vbMonday) 

我知道有一个在C#中的函数:

int dayOfWeek = (int)DateTime.Today.DayOfWeek; 

但如何指定一周的第一天是星期一,然后函数DayOfWeek考虑它并返回正确的值?

我需要获取一个int值。

+1

这真的不清楚你的目标达到的目标。 DayOfWeek属性返回一个DayOfWeek枚举值 - 不受这一周的第一天的影响。你期望得到什么样的价值? –

回答

1

你可以通过调用CultureInfo.CurrentCulture.DateTimeFormat.FirstDayOfWeek获得一周的第一天,但​​我认为你可以没有做到这一点。

Weekday功能星期一返回1,就像DayOfWeek。唯一的特例是星期天,这.NET收益为0,而VB返回7.

只是做数学题:

int dayOfWeek = DateTime.Today.DayOfWeek == DayOfWeek.Sunday 
       ? 7 
       : (int)DateTime.Today.DayOfWeek; 
+0

你确定吗?从msdn文档:https://msdn.microsoft.com/en-us/library/82yfs2zh(v=vs.90).aspx在星期日vb6是1,星期一2和星期六7,如果你没有指定的第一天周作为WeekDay函数中的参数,默认情况下,星期几的第一天是星期日。在我的示例中,通过在WeekDay函数中使用参数指定周一的第一个星期几为星期一,所以星期一为1,星期二为2,星期日为7,这就是我的理解。 – user1624552

+0

是的,但你将它设置为'Monday = 1',这就是为什么它是1(所以你偏离文档)。 –

+0

好了,在.NET你不指定一周的第一天,就被默认设置为星期日,所以周日是0,周一是1,2日星期二,......,星期六6 – user1624552

0
DateTime dateValue = new DateTime(2008, 6, 11); 



Console.WriteLine((int) dateValue.DayOfWeek); 

//中的例子显示以下输出: // 3

Console.WriteLine(dateValue.ToString("dddd")); 

//中的例子显示如下输出: //星期三

Console.WriteLine(dateValue.ToString("dddd")); 

//中的例子显示的输出如下:// 周三

相关问题