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

@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)


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;

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;

@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);

3

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

DayOfWeek.ToString("d")

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;


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"
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.