Как получить целое число дня недели


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, мне не удалось переформатировать его код для помещения его кода в блок кода, почему?
uday

4
Вы звоните, ToString()так почему вы можете ожидать чего-либо, кроме строки?
Брайан Расмуссен

@Dave, мне пришлось отделить это строкой от текста вопроса, иначе код просто отступил ...
Джо

прохладный! Я пытался превратить его код в кодовый блок, и это не позволяло мне это сделать.
uday

Ответы:


171

Использовать

day1 = (int)ClockInfoFromSystem.DayOfWeek;

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

11

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

3
Если вы хотите сделать это быстрее, взгляните на это: stackoverflow.com/a/22278311/3315914
rpax

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

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


65

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

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

9
Проголосовали, поскольку этого хотели бы все нормальные люди. ISO 8601 довольно ясно говорит по этому поводу. Понедельник - день 1, воскресенье - день 7.
Морваэль,

Если не выпущено свойство DayOfWeek, в воскресенье вернется ноль. Почти внесла ошибку, реализовав ответ, получивший наибольшее количество голосов. Спасибо!
breez

6
day1= (int)ClockInfoFromSystem.DayOfWeek;

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

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


3

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

DayOfWeek.ToString("d")

4
Это вернет a string, а не int.
Дэнни Беккет

Это день месяца, а не день недели
Фриц

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

2

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

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


0

Правильный ответ - это действительно правильный ответ для получения значения int.

Но, если вы просто проверяете, например, что сейчас воскресенье ... Рассмотрите возможность использования следующего кода вместо преобразования в int. Это обеспечивает гораздо большую читаемость.

if (yourDateTimeObject.DayOfWeek == DayOfWeek.Sunday)
{
    // You can easily see you're checking for sunday, and not just "0"
}
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.