2012-02-08 3 views
64

Comment obtenir le jour d'une semaine en format entier? Je sais que ToString retournera seulement une chaîne.Comment obtenir la valeur entière du jour de la semaine

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, j'ai été incapable de reformater son code pour placer son code dans le bloc de code, pourquoi est-ce? – uday

+3

Vous appelez 'ToString()' alors pourquoi attendriez-vous autre chose qu'une chaîne? –

+0

@Dave, j'ai dû séparer une ligne du texte de la question, ou bien il a juste indenté le code ... – Joe

Répondre

114

Utilisez

day1 = (int)ClockInfoFromSystem.DayOfWeek; 
+0

il retournera 0 pour lundi et ainsi de suite? – akshaykumar6

+9

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

+31

Si vous voulez que le lundi soit 0, il suffit de décaler les jours: 'day1 = (int) (ClockInfoFromSystem .DayOfWeek + 6)% 7' –

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

@JustinSatyr - FiveTools était clairement juste donner un exemple. Ce n'est pas sa faute si l'auteur essayait de définir une valeur String à une variable entière. –

+0

@Ramhound: Je n'ai pas downvote et je ne critiquais pas. Je pensais qu'il avait mal lu le code. Et apparemment, j'avais raison en corrigeant son code. –

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

Premier jour de la semaine: dimanche (avec une valeur de zéro)

37

Si vous voulez régler premier jour de la semaine Lundi avec valeur entière 1 et dimanche avec valeur entière 7

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

Up-voté comme tous les gens sensés le voudraient. L'ISO 8601 est assez claire sur ce point. Lundi est le jour 1, dimanche est le jour 7. – Morvael

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

Essayez ceci. Il fonctionne très bien:

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

La bonne façon d'obtenir la valeur entière d'un Enum tel que DayOfWeek comme une chaîne est:

DayOfWeek.ToString("d") 
+3

Cela retournera un 'chaîne', pas un' int'. –

0

Une autre façon d'obtenir lundi avec la valeur entière 1 et dimanche avec la valeur entière 7

int day = ((int)DateTime.Now.DayOfWeek + 6) % 7 + 1;
Questions connexes