Come ottenere il valore intero del giorno della settimana


104

Come ottengo il giorno della settimana in formato intero? So che ToString restituirà solo una stringa.

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, non sono riuscito a riformattare il suo codice per inserire il suo codice nel blocco di codice, perché?
lunedì

4
Stai chiamando, ToString()quindi perché dovresti aspettarti altro che una stringa?
Brian Rasmussen

@ Dave, ho dovuto separarla di una riga dal testo della domanda, oppure ha semplicemente rientrato il codice ...
Joe

freddo! Stavo cercando di trasformare il suo codice in un blocco di codice e non me lo ha permesso.
lunedì

Risposte:



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

Primo giorno della settimana: domenica (con valore zero)


65

Se si desidera impostare il primo giorno della settimana su lunedì con valore intero 1 e domenica con valore intero 7

int day = ((int)DateTime.Now.DayOfWeek == 0) ? 7 : (int)DateTime.Now.DayOfWeek;

9
Up-votato perché tutte le persone sane di mente lo vorrebbero. ISO 8601 è abbastanza chiaro sul punto. Lunedì è il giorno 1, domenica è il giorno 7.
Morvael

Se la proprietà DayOfWeek non è stata rilasciata, domenica verrà restituito zero. Quasi introdotto un bug implementando la risposta più votata. Grazie!
breez

6
day1= (int)ClockInfoFromSystem.DayOfWeek;

@JustinSatyr - FiveTools stava chiaramente dando solo un esempio. Non è colpa sua se l'autore stava tentando di impostare un valore String su una variabile intera.
Segugio della sicurezza

@Ramhound: non ho votato negativamente e non ho criticato. Pensavo avesse letto male il codice. E a quanto pare avevo ragione dal fatto che ha corretto il suo codice.
Devin Burke

5

Prova questo. Funzionerà perfettamente:

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

3

Il modo corretto per ottenere il valore intero di un Enum come DayOfWeek come stringa è:

DayOfWeek.ToString("d")

4
Questo restituirà un string, non un int.
Danny Beckett

Questo è il giorno del mese non il giorno della settimana
Fritz

@Fritz no non lo è, è un numero intero "come una stringa" come ho detto. Ti stai confondendo con la formattazione della data che non è.
Rob Sedgwick

2

Un altro modo per ottenere lunedì con valore intero 1 e domenica con valore intero 7

int giorno = ((int) DateTime.Now.DayOfWeek + 6)% 7 + 1;

0
DateTime currentDateTime = DateTime.Now;
int week = (int) currentDateTime.DayOfWeek;
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.