2012-02-08 18 views
64

Jak dostać dzień tygodnia w formacie liczby całkowitej? Wiem, że ToString zwróci tylko ciąg znaków.Jak uzyskać wartość całkowitą dzień tygodnia

DateTime ClockInfoFromSystem = DateTime.Now; 
int day1; 
string day2; 
day1= ClockInfoFromSystem.DayOfWeek.ToString(); /// it is not working 
day2= ClockInfoFromSystem.DayOfWeek.ToString(); /// it gives me string 
+0

@Joe, nie byłem w stanie sformatować swój kod do umieszczenia jego kod w bloku kodu, to dlaczego? – uday

+3

Nazywasz 'ToString()', więc dlaczego miałbyś oczekiwać czegoś innego niż ciąg? –

+0

@Dave, musiałem oddzielić wiersz od tekstu pytania, albo po prostu wciął kod ... – Joe

Odpowiedz

114

Zastosowanie

day1 = (int)ClockInfoFromSystem.DayOfWeek; 
+0

to zwróci 0 na poniedziałek i tak dalej? – akshaykumar6

+9

@developer niedzielę 0. http://msdn.microsoft.com/en-us/library/system.dayofweek.aspx –

+31

Jeśli chcesz poniedziałku do 0, po prostu przesunięcie dni: 'day1 = (int) (ClockInfoFromSystem .DayOfWeek + 6)% 7' –

6
day1= (int)ClockInfoFromSystem.DayOfWeek; 
+0

@JustinSatyr - FiveTools wyraźnie tylko dawać przykład. To nie jego wina autor próbował ustawić wartość String na zmienną całkowitą. –

+0

@Ramhound: Nie upadłem i nie krytykowałem. Myślałem, że źle odczytał kod. I najwyraźniej miałem rację, ponieważ poprawił swój kod. –

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

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

37

Jeśli chcesz ustawić pierwszy dzień tygodnia poniedziałek 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; 
+3

Uprzywilejowane, tak jak wszyscy rozsądni ludzie by tego chcieli. ISO 8601 jest całkiem jasne w tej kwestii. Poniedziałek to dzień 1, niedziela to dzień 7. – Morvael

0
DateTime currentDateTime = DateTime.Now; 
int week = (int) currentDateTime.DayOfWeek; 
4

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

int week = Convert.ToInt32(currentDateTime.DayOfWeek); 
2

poprawny sposób, aby uzyskać wartość całkowitą enum takich jak DAYOFWEEK jako ciąg jest:

DayOfWeek.ToString("d") 
+3

Spowoduje to powrót 'string', a nie' int'. –

0

Innym sposobem, aby dostać się w poniedziałek o wartości całkowitej 1 i niedzielę o wartości całkowitej 7

int day = ((int)DateTime.Now.DayOfWeek + 6) % 7 + 1;
Powiązane problemy