我正在將舊的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枚舉值 - 不受這一週的第一天的影響。你期望得到什麼樣的價值? –