2015-08-04 4 views
3

Есть ли способ, чтобы иметь что-то вроде:Получая строку с днем ​​недели, вернуть целое

string day = "Sunday"; 
int num = getDayOfWeek(day); //returns 0 

Я понимаю, что мы могли бы что-то подобное, и я хотел реверс:

int num = 0; 

//returns "Sunday" 
return System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.DayNames[(int)num]; 

проще всего было бы реализовать словарь, который делает то, что я прошу, но мне интересно, есть ли что-то в C#DateTime функции, которые уже делают это для меня.

EDIT:

Как Джон Скит отметил, что было бы идеально, что ответ поддерживается различные культуры дней (например «воскресенье» на английском языке, «Сегунд» на португальском языке ....)

+0

Это [это] (http://stackoverflow.com/questions/1615380/how-can-i-know-the-day-name-from-a-selected-date) help? – ntohl

+4

Вам нужно обрабатывать несколько культур? –

+0

@JonSkeet Это было бы идеально (и это тоже вопрос), но пока я был бы рад узнать, есть ли что-то вроде того, что я спросил. –

ответ

11
var inx = Array.FindIndex(CultureInfo.CurrentCulture.DateTimeFormat.DayNames, x=>x=="Sunday"); 
+0

Будет ли это работать' x => x == "Sunday" ' –

+0

@NikhilAgrawal yep ... – EZI

+0

Это именно то, что я хотел. Благодаря! –

3

Вы можете сделать следующее:

string myDay = "Tuesday"; 
int dayNumber = ((int)Enum.Parse(typeof(DayOfWeek), myDay)); // dayNumber = 2 

Каждый день недели отображается на следующий номер:

- Sunday = 0 
- Monday = 1 
- Tuesday = 2 
- Wednesday = 3 
- Thursday = 4 
- Friday = 5 
- Saturday = 6 
+2

Это путь. Хотя вам лучше быть осторожным с этим «Enum.Parse» ... –

+0

два других ответа вроде этого получили downvoted ... – Ric

+0

Будет ли это поддерживать разные культуры? –

Смежные вопросы