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

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


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;

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;

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

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

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;

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

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"
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.