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

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
Акшайкумар6
источник
@Joe, мне не удалось переформатировать его код для помещения его кода в блок кода, почему?
uday
4
Вы звоните, ToString()так почему вы можете ожидать чего-либо, кроме строки?
Брайан Расмуссен
@Dave, мне пришлось отделить это строкой от текста вопроса, иначе код просто отступил ...
Джо
прохладный! Я пытался превратить его код в кодовый блок, и это не позволяло мне это сделать.
uday

Ответы:

171

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

day1 = (int)ClockInfoFromSystem.DayOfWeek;
Джо
источник
2
он вернет 0 для понедельника и так далее?
akshaykumar6
11
@developer Воскресенье - 0. msdn.microsoft.com/en-us/library/system.dayofweek.aspx
Рой Гуд,
44
Если вы хотите, чтобы понедельник был 0, просто сместите дни:day1 = (int)(ClockInfoFromSystem.DayOfWeek + 6) % 7
Кевин Госс,
3
Если вы хотите сделать это быстрее, взгляните на это: stackoverflow.com/a/22278311/3315914
rpax
81
int day = (int)DateTime.Now.DayOfWeek;

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

Peroija
источник
65

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

int day = ((int)DateTime.Now.DayOfWeek == 0) ? 7 : (int)DateTime.Now.DayOfWeek;
Мартин Сансоне - MiOEE
источник
9
Проголосовали, поскольку этого хотели бы все нормальные люди. ISO 8601 довольно ясно говорит по этому поводу. Понедельник - день 1, воскресенье - день 7.
Морваэль,
Если не выпущено свойство DayOfWeek, в воскресенье вернется ноль. Почти внесла ошибку, реализовав ответ, получивший наибольшее количество голосов. Спасибо!
breez
6
day1= (int)ClockInfoFromSystem.DayOfWeek;
FiveИнструменты
источник
@JustinSatyr - FiveTools явно приводил пример. Автор не виноват, что пытался установить значение String для целочисленной переменной.
Security Hound
@Ramhound: Я не голосовал против и не критиковал. Я думал, он неправильно прочитал код. И видимо я был прав в том, что он поправил свой код.
Девин Берк
5

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

int week = Convert.ToInt32(currentDateTime.DayOfWeek);
РавиКант Худда
источник
3

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

DayOfWeek.ToString("d")
Роб Седжвик
источник
4
Это вернет a string, а не int.
Дэнни Беккет
Это день месяца, а не день недели
Фриц
@Fritz нет, это целое число перечисления "как строка", как я сказал. Вы запутались с форматированием даты, а это не так.
Роб Седжвик
2

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

int day = ((int) DateTime.Now.DayOfWeek + 6)% 7 + 1;
Руслан Гайдук
источник
0
DateTime currentDateTime = DateTime.Now;
int week = (int) currentDateTime.DayOfWeek;
Майкл Мерфи
источник
0

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

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

if (yourDateTimeObject.DayOfWeek == DayOfWeek.Sunday)
{
    // You can easily see you're checking for sunday, and not just "0"
}
Джастин Джей Джеймс
источник