So erhalten Sie den ganzzahligen Wert des Wochentags

104

Wie erhalte ich den Wochentag im Ganzzahlformat? Ich weiß, dass ToString nur eine Zeichenfolge zurückgibt.

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
quelle
@ Joe, ich konnte seinen Code für die Platzierung seines Codes im Codeblock nicht neu formatieren. Warum ist das so?
Donnerstag,
4
Sie rufen an ToString(), warum sollten Sie also etwas anderes als eine Zeichenfolge erwarten?
Brian Rasmussen
@ Dave, ich musste es eine Zeile vom Text der Frage trennen, sonst hat es nur den Code eingerückt ...
Joe
cool! Ich habe versucht, seinen Code in einen Codeblock zu verwandeln, und das kann ich nicht.
Donnerstag,

Antworten:

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

Erster Tag der Woche: Sonntag (mit einem Wert von Null)

Peroija
quelle
64

Wenn Sie den ersten Wochentag auf Montag mit dem ganzzahligen Wert 1 und Sonntag auf den ganzzahligen Wert 7 setzen möchten

int day = ((int)DateTime.Now.DayOfWeek == 0) ? 7 : (int)DateTime.Now.DayOfWeek;
Martin Sansone - MiOEE
quelle
9
Up-Voted, da alle vernünftigen Leute dies wollen würden. ISO 8601 ist in diesem Punkt ziemlich klar. Montag ist Tag 1, Sonntag ist Tag 7.
Morvael
Wenn die DayOfWeek-Eigenschaft nicht freigegeben wurde, wird am Sonntag Null zurückgegeben. Fast ein Fehler durch die Implementierung der am besten bewerteten Antwort eingeführt. Vielen Dank!
Breez
6
day1= (int)ClockInfoFromSystem.DayOfWeek;
FiveTools
quelle
@JustinSatyr - FiveTools gab eindeutig nur ein Beispiel. Es ist nicht seine Schuld, dass der Autor versucht hat, einen String-Wert auf eine ganzzahlige Variable zu setzen.
Sicherheitshund
@ Ramhound: Ich habe nicht abgelehnt und nicht kritisiert. Ich dachte, er hätte den Code falsch verstanden. Und anscheinend hatte ich Recht damit, dass er seinen Code korrigierte.
Devin Burke
5

Versuche dies. Es wird gut funktionieren:

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

Der richtige Weg, um den ganzzahligen Wert einer Aufzählung wie DayOfWeek als Zeichenfolge abzurufen, ist:

DayOfWeek.ToString("d")
Rob Sedgwick
quelle
4
Dies gibt ein string, kein zurück int.
Danny Beckett
Dies ist Tag des Monats, nicht Tag der Woche
Fritz
@Fritz nein, ist es nicht, es ist eine Enum-Ganzzahl "als Zeichenfolge", wie ich sagte. Sie werden mit der Datumsformatierung verwechselt, die dies nicht ist.
Rob Sedgwick
2

Eine andere Möglichkeit, Montag mit ganzzahligem Wert 1 und Sonntag mit ganzzahligem Wert 7 zu erhalten

int day = ((int) DateTime.Now.DayOfWeek + 6)% 7 + 1;
Ruslan Hayduk
quelle
0
DateTime currentDateTime = DateTime.Now;
int week = (int) currentDateTime.DayOfWeek;
Michael Murphy
quelle