Як отримати ціле значення дня тижня


104

Як отримати день тижня в цілому форматі? Я знаю, що 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

@Joe, мені не вдалося переформатувати його код для розміщення його коду в блоці коду, чому це так?
Удай

4
Ти дзвониш, ToString()то чому б ти очікував нічого, крім струни?
Брайан Расмуссен

@Dave, мені довелося відокремити рядок від тексту запитання, інакше він просто з відступом коду ...
Джо

круто! Я намагався перетворити його код на кодблок, і це дозволяє мені робити.
вдень

Відповіді:


171

Використовуйте

day1 = (int)ClockInfoFromSystem.DayOfWeek;

2
це поверне 0 у понеділок тощо?
akshaykumar6


44
Якщо ви хочете, щоб понеділок був 0, просто змістіть дні:day1 = (int)(ClockInfoFromSystem.DayOfWeek + 6) % 7
Кевін Госс

3
Якщо ви хочете зробити це швидше, подивіться на це: stackoverflow.com/a/22278311/3315914
rpax

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

Перший день тижня: неділя (зі значенням нуля)


64

Якщо ви хочете встановити перший день тижня на понеділок з цілим значенням 1 та неділю з цілим значенням 7

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

9
Як і всі здорові люди цього хочуть. ISO 8601 досить зрозумілий. Понеділок - 1 день, неділя - 7 день.
Морваль

Не випустив властивість DayOfWeek поверне нуль у неділю. Майже ввели помилку, застосувавши найкращу відповідь. Дякую!
вітер

6
day1= (int)ClockInfoFromSystem.DayOfWeek;

@JustinSatyr - FiveTools явно просто давав приклад. Це не його вина, автор намагався встановити значення String цілочисленній змінній.
Охорона безпеки

@Ramhound: Я не спростував і не критикував. Я думав, що він неправильно прочитав код. І явно я мав рацію тим, що він виправив свій код.
Девін Берк

5

Спробуйте це. Це буде добре працювати:

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

2

Правильний спосіб отримати ціле значення Enum, такого як DayOfWeek як рядок, є:

DayOfWeek.ToString("d")

4
Це поверне a string, а не an int.
Денні Беккет

Це день місяця, а не день тижня
Фріц,

@Fritz ні, це не так, це enum ціле число "як рядок", як я вже сказав. Ви плутаєтесь із форматуванням дати, яке це не так.
Роб Седжвік

2

Ще один спосіб отримати понеділок з цілим значенням 1 та неділю з цілим значенням 7

int day = ((int) DateTime.Now.DayOfWeek + 6)% 7 + 1;

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.