2011-02-03 5 views
3

Я обзор некоторый код, и нашел этот бит (переписан):Can Calendar.GetDayOfWeek() return (DayOfWeek) 7?

if ((int)CultureInfo.CurrentCulture.Calendar.GetDayOfWeek(someDate) == 7) ... 

Я думаю, это условие всегда возвращает ложь, так как DayOfWeek (возвращаемый тип) находится в диапазоне от 0 до 6, или может это в конечном итоге вернуть 7 в определенной культуре?

+1

Это как раз ту глупость, с которой я сталкиваюсь каждый день; о, радость! –

ответ

1

Обычно GetDayOfWeek никогда не возвращает значение 7.

(преобразованного) Из кода он очень непонятно, что хочет программист. Я предлагаю переписать его как:

if (CultureInfo.CurrentCulture.Calendar.GetDayOfWeek(someDate) == DayOfWeek.Saturday) ... 

Или что-то еще.

+0

На самом деле они повторно используют номер дня, чтобы найти предыдущий понедельник с помощью AddDays (...), поэтому, я думаю, мне все еще нужно это (просто удалите if-statement). Если вы не знаете более чистый способ найти предыдущий понедельник? – Koen

+0

Я использую: (сегодня = переменная DateTime, которая содержит дату): 'var lastMonday = today.DayOfWeek == DayOfWeek.Sunday? today.AddDays (-6): today.AddDays (- (int) today.DayOfWeek) .AddDays (1); ' – GvS

2

Вы взглянули на DayOfWeek enum page on MSDN?

Перечень DayOfWeek представляет собой день недели в календаре, который имеет семь дней в неделю. Значение констант в этом перечислении варьируется от DayOfWeek.Sunday до DayOfWeek.Saturday. Если применить к целому числу, его значение варьируется от нуля (что указывает на DayOfWeek.Sunday) на шесть (что указывает DayOfWeek.Saturday).

3

Перечень DayOfWeek представляет собой день недели в календарах, которые имеют семь дней в неделю. Значение констант в этом перечислении варьируется от DayOfWeek.Sunday до DayOfWeek.Saturday. Если применить к целому числу, его значение варьируется от нуля (что указывает на DayOfWeek.Sunday) на шесть (что указывает DayOfWeek.Saturday).

Источник - http://msdn.microsoft.com/en-us/library/system.dayofweek.aspx

+0

Я знаю (и читаю), что очевидно. Все еще перечисления допускают другие значения, чем предопределенные значения, например. '(DayOfWeek) 7' работает во время компиляции и времени выполнения, поэтому я запутался, как будто этот бит кода действительно имеет смысл в какой-то момент ... – Koen