2012-02-08 12 views
64

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

DateTime ClockInfoFromSystem = DateTime.Now; 
int day1; 
string day2; 
day1= ClockInfoFromSystem.DayOfWeek.ToString(); /// it is not working 
day2= ClockInfoFromSystem.DayOfWeek.ToString(); /// it gives me string 
+0

@Joe, no pude volver a formatear su código para colocar su código en el bloque de código, ¿por qué? – uday

+3

Está llamando a 'ToString()' entonces, ¿por qué esperaría algo más que una cadena? –

+0

@Dave, tuve que separarlo una línea del texto de la pregunta, o sino solo sancionó el código ... – Joe

Respuesta

114

Uso

day1 = (int)ClockInfoFromSystem.DayOfWeek; 
+0

¿devolverá 0 el lunes y así sucesivamente? – akshaykumar6

+9

@developer Sunday es 0. http://msdn.microsoft.com/en-us/library/system.dayofweek.aspx –

+31

Si desea que el lunes sea 0, simplemente cambie los días: 'day1 = (int) (ClockInfoFromSystem .DayOfWeek + 6)% 7' –

6
day1= (int)ClockInfoFromSystem.DayOfWeek; 
+0

@JustinSatyr - FiveTools claramente estaba dando un ejemplo. No es su culpa que el autor intentara establecer un valor String en una variable entera. –

+0

@Ramhound: No perdoné y no criticaba. Pensé que leyó mal el código. Y aparentemente estaba en lo correcto por el hecho de que corrigió su código. –

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

primer día de la semana: Domingo (con un valor de cero)

37

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

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

Votó como todas las personas en su sano juicio querrían esto. ISO 8601 es bastante claro en el punto. El lunes es el día 1, el domingo es el día 7. – Morvael

0
DateTime currentDateTime = DateTime.Now; 
int week = (int) currentDateTime.DayOfWeek; 
4

Pruebe esto. Que funciona muy bien:

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

La forma correcta para obtener el valor entero de una enumeración como DayOfWeek como una cadena es:

DayOfWeek.ToString("d") 
+3

Esto devolverá una 'cadena', no un' int'. –

0

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

int day = ((int)DateTime.Now.DayOfWeek + 6) % 7 + 1;
Cuestiones relacionadas