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

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


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;

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;

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

2

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

DayOfWeek.ToString("d")

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;

0
DateTime currentDateTime = DateTime.Now;
int week = (int) currentDateTime.DayOfWeek;
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.