2012-02-08 2 views
64

Как получить день недели в целочисленном формате? Я знаю, что ToString вернет только строку.Как получить целочисленное значение дня недели

DateTime ClockInfoFromSystem = DateTime.Now; 
int day1; 
string day2; 
day1= ClockInfoFromSystem.DayOfWeek.ToString(); /// it is not working 
day2= ClockInfoFromSystem.DayOfWeek.ToString(); /// it gives me string 
+0

@Joe, мне не удалось переформатировать его код для размещения его кода в блоке кода, почему? – uday

+3

Вы вызываете 'ToString()', так почему вы ожидаете ничего, кроме строки? –

+0

@Dave, мне пришлось отделить его от текста вопроса, иначе он просто отступил код ... – Joe

ответ

114

Использование

day1 = (int)ClockInfoFromSystem.DayOfWeek; 
+0

он вернется 0 в понедельник и так далее? – akshaykumar6

+9

@developer Sunday 0. http://msdn.microsoft.com/en-us/library/system.dayofweek.aspx –

+31

Если вы хотите, чтобы в понедельник было 0, просто сдвиньте дни: 'day1 = (int) (ClockInfoFromSystem .DayOfWeek + 6)% 7' –

6
day1= (int)ClockInfoFromSystem.DayOfWeek; 
+0

@JustinSatyr - FiveTools явно просто приводил пример. Он не виноват в том, что автор пытался установить значение String целочисленной переменной. –

+0

@ Ramhound: Я не спускался вниз, и я не критиковал. Я думал, что он неправильно прочитал код. И, видимо, я был прав по тому, что он исправил свой код. –

55
int day = (int)DateTime.Now.DayOfWeek; 

Первый день недели: воскресенье (с нулевым значением)

37

Если вы хотите установить первый день недели Понедельник с целым значением 1 и воскресеньем с целым значением 7

int day = ((int)DateTime.Now.DayOfWeek == 0) ? 7 : (int)DateTime.Now.DayOfWeek; 
+3

Увы, если все здравомыслящие люди захотят этого. ISO 8601 вполне понятен. Понедельник - день 1, воскресенье - день 7. – Morvael

0
DateTime currentDateTime = DateTime.Now; 
int week = (int) currentDateTime.DayOfWeek; 
4

Попробуйте это. Он будет работать нормально:

int week = Convert.ToInt32(currentDateTime.DayOfWeek); 
2

Правильный способ получить целое значение перечислимого типа, такие как DayOfWeek как строка:

DayOfWeek.ToString("d") 
+3

Это вернет строку, а не 'int'. –

0

Другой способ получить понедельник с целочисленным значением 1 и воскресенье с целочисленным значением 7

int day = ((int)DateTime.Now.DayOfWeek + 6) % 7 + 1;
Смежные вопросы