Jak uzyskać wartość całkowitą dnia tygodnia

104

Jak uzyskać dzień tygodnia w formacie liczb całkowitych? Wiem, że ToString zwróci tylko ciąg.

DateTime ClockInfoFromSystem = DateTime.Now;
int day1;
string day2;
day1= ClockInfoFromSystem.DayOfWeek.ToString(); /// it is not working
day2= ClockInfoFromSystem.DayOfWeek.ToString(); /// it gives me string
akshaykumar6
źródło
@Joe, nie udało mi się sformatować jego kodu w celu umieszczenia jego kodu w bloku kodu, dlaczego tak jest?
uday
4
Dzwonisz, ToString()więc dlaczego miałbyś oczekiwać czegoś innego niż sznurka?
Brian Rasmussen
@Dave, musiałem oddzielić to wiersz od tekstu pytania, albo po prostu wciąłem kod ...
Joe
chłodny! Próbowałem przekształcić jego kod w codeblock i na to nie pozwalałem.
uday,

Odpowiedzi:

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

Pierwszy dzień tygodnia: niedziela (z wartością zero)

peroija
źródło
65

Jeśli chcesz ustawić pierwszy dzień tygodnia na poniedziałek o wartości całkowitej 1 i niedzielę o wartości całkowitej 7

int day = ((int)DateTime.Now.DayOfWeek == 0) ? 7 : (int)DateTime.Now.DayOfWeek;
Martin Sansone - MiOEE
źródło
9
Głosowano w górę, jak chcieliby tego wszyscy rozsądni ludzie. ISO 8601 jest dość jasne w tym punkcie. Poniedziałek to dzień 1, niedziela to dzień 7.
Morvael
Nie wydano właściwości DayOfWeek, która zwróciłaby zero w niedzielę. Prawie wprowadzono błąd, wprowadzając najczęściej głosowaną odpowiedź. Dzięki!
breez
6
day1= (int)ClockInfoFromSystem.DayOfWeek;
FiveTools
źródło
@JustinSatyr - FiveTools wyraźnie podał tylko przykład. To nie jego wina, że ​​autor próbował przypisać wartość String do zmiennej całkowitej.
Security Hound
@Ramhound: Nie głosowałem przeciw i nie krytykowałem. Myślałem, że źle odczytał kod. I najwyraźniej miałam rację, że poprawił swój kod.
Devin Burke
5

Spróbuj tego. Będzie działać dobrze:

int week = Convert.ToInt32(currentDateTime.DayOfWeek);
RaviKant Hudda
źródło
3

Prawidłowy sposób uzyskania wartości całkowitej wyliczenia, takiego jak DayOfWeek, jako ciągu:

DayOfWeek.ToString("d")
Rob Sedgwick
źródło
4
To zwróci a string, a nie int.
Danny Beckett
To jest dzień miesiąca, a nie dzień tygodnia
Fritz
@Fritz nie, to nie jest, jest to liczba całkowita wyliczenia „jako ciąg znaków”, jak powiedziałem. Mylisz się z formatowaniem daty, które tak nie jest.
Rob Sedgwick
2

Innym sposobem uzyskania poniedziałku z wartością całkowitą 1 i niedzieli z wartością całkowitą 7

int day = ((int) DateTime.Now.DayOfWeek + 6)% 7 + 1;
Ruslan Hayduk
źródło
0
DateTime currentDateTime = DateTime.Now;
int week = (int) currentDateTime.DayOfWeek;
Michael Murphy
źródło
0

Prawidłowa odpowiedź jest rzeczywiście poprawną odpowiedzią, aby uzyskać wartość int.

Ale jeśli sprawdzasz tylko, czy na przykład jest niedziela ... Rozważ użycie następującego kodu, zamiast rzutowania na int. Zapewnia to znacznie większą czytelność.

if (yourDateTimeObject.DayOfWeek == DayOfWeek.Sunday)
{
    // You can easily see you're checking for sunday, and not just "0"
}
Justin J James
źródło