Cómo obtener el valor entero del día de la semana

104

¿Cómo obtengo el día de la semana en formato entero? Sé que ToString devolverá solo una cadena.

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
fuente
@ Joe, no pude reformatear su código para colocar su código en el bloque de código, ¿por qué?
2012
4
Estás llamando, ToString()¿por qué esperarías algo más que una cuerda?
Brian Rasmussen
@ Dave, tuve que separar una línea del texto de la pregunta, o simplemente sangraba el código ...
Joe
¡frio! Estaba tratando de convertir su código en un bloque de código y no me lo permitió.
2012

Respuestas:

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

Primer día de la semana: domingo (con valor cero)

peroija
fuente
64

Si desea establecer el primer día de la semana en lunes con valor entero 1 y domingo con valor entero 7

int day = ((int)DateTime.Now.DayOfWeek == 0) ? 7 : (int)DateTime.Now.DayOfWeek;
Martin Sansone - MiOEE
fuente
9
Elegido porque todas las personas cuerdas querrían esto. ISO 8601 es bastante claro al respecto. El lunes es el día 1, el domingo es el día 7.
Morvael
No se lanzó la propiedad DayOfWeek que devolvería cero el domingo. Casi introdujo un error al implementar la respuesta más votada. ¡Gracias!
Breez
6
day1= (int)ClockInfoFromSystem.DayOfWeek;
FiveTools
fuente
@JustinSatyr - FiveTools claramente solo estaba dando un ejemplo. No es culpa suya que el autor intentara establecer un valor de cadena en una variable entera.
Security Hound
@Ramhound: No voté en contra y no critiqué. Pensé que había leído mal el código. Y aparentemente estaba en lo cierto por el hecho de que corrigió su código.
Devin Burke
5

Prueba esto. Funcionará bien:

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

La forma correcta de obtener el valor entero de un Enum como DayOfWeek como una cadena es:

DayOfWeek.ToString("d")
Rob Sedgwick
fuente
4
Esto devolverá un string, no un int.
Danny Beckett
Este es el día del mes, no el día de la semana
Fritz
@Fritz no, no lo es, es un entero enum "como una cadena" como dije. Se está confundiendo con el formato de fecha, que no es así.
Rob Sedgwick
2

Otra forma de obtener el lunes con valor entero 1 y el domingo con valor entero 7

int día = ((int) DateTime.Now.DayOfWeek + 6)% 7 + 1;
Ruslan Hayduk
fuente
0
DateTime currentDateTime = DateTime.Now;
int week = (int) currentDateTime.DayOfWeek;
Michael Murphy
fuente