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.