Comment obtenir la valeur entière du jour de la semaine

104

Comment obtenir le jour de la semaine au format entier? Je sais que ToString ne retournera qu'une chaîne.

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
la source
@Joe, je n'ai pas pu reformater son code pour avoir placé son code dans un bloc de code, pourquoi?
uday
4
Vous appelez ToString()alors pourquoi vous attendriez-vous à autre chose qu'à une chaîne?
Brian Rasmussen
@Dave, j'ai dû le séparer d'une ligne du texte de la question, sinon il a juste mis le code en retrait ...
Joe
cool! J'essayais de faire de son code un bloc de code et cela me permettait de le faire.
uday

Réponses:

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

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

peroija
la source
65

Si vous souhaitez définir le premier jour de la semaine sur lundi avec la valeur entière 1 et dimanche avec la valeur entière 7

int day = ((int)DateTime.Now.DayOfWeek == 0) ? 7 : (int)DateTime.Now.DayOfWeek;
Martin Sansone - MiOEE
la source
9
Voté comme toutes les personnes sensées le voudraient. L'ISO 8601 est assez claire sur ce point. Lundi est le jour 1, dimanche est le jour 7.
Morvael
N'a pas libéré la propriété DayOfWeek renverrait zéro dimanche. Presque introduit un bug en implémentant la réponse la plus votée. Merci!
breez
6
day1= (int)ClockInfoFromSystem.DayOfWeek;
FiveTools
la source
@JustinSatyr - FiveTools ne donnait clairement qu'un exemple. Ce n'est pas de sa faute si l'auteur a tenté de définir une valeur String sur une variable entière.
Security Hound
@Ramhound: Je n'ai pas voté contre et je n'ai pas critiqué. Je pensais qu'il avait mal lu le code. Et apparemment j'avais raison du fait qu'il a corrigé son code.
Devin Burke
5

Essaye ça. Cela fonctionnera très bien:

int week = Convert.ToInt32(currentDateTime.DayOfWeek);
RaviKant Hudda
la source
3

La manière correcte d'obtenir la valeur entière d'un Enum tel que DayOfWeek sous forme de chaîne est:

DayOfWeek.ToString("d")
Rob Sedgwick
la source
4
Cela renverra un string, pas un int.
Danny Beckett
C'est le jour du mois pas le jour de la semaine
Fritz
@Fritz non ce n'est pas, c'est un entier enum "sous forme de chaîne" comme je l'ai dit. Vous êtes confus avec le formatage de la date, ce qui n'est pas le cas.
Rob Sedgwick
2

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

int jour = ((int) DateTime.Now.DayOfWeek + 6)% 7 + 1;
Ruslan Hayduk
la source
0
DateTime currentDateTime = DateTime.Now;
int week = (int) currentDateTime.DayOfWeek;
Michael Murphy
la source
0

La bonne réponse, est en effet la bonne réponse pour obtenir la valeur int.

Mais, si vous vérifiez simplement pour vous assurer que c'est dimanche par exemple ... Pensez à utiliser le code suivant, au lieu de convertir en un int. Cela offre une meilleure lisibilité.

if (yourDateTimeObject.DayOfWeek == DayOfWeek.Sunday)
{
    // You can easily see you're checking for sunday, and not just "0"
}
Justin J James
la source