2017-06-06 179 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")); 

//中的例子顯示的輸出如下:// 週三

相關問題