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

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


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;

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;

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

2

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

DayOfWeek.ToString("d")

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;

0
DateTime currentDateTime = DateTime.Now;
int week = (int) currentDateTime.DayOfWeek;
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.