8
votes

Conversion de la journée enum à une chaîne représentant la journée

Je me demandais s'il y avait un moyen de convertir directement l'entier Dayofweek Code> dans une chaîne représentant le jour comme lundi, mardi etc.

échantillon code: p>

Select Case Date.Today.DayOfWeek
     Case 0
         day = "Sunday"
     Case 1
         day = "Monday"
     Case 2
         day = "Tuesday"
     Case 3
         day = "Wednesday"
     Case 4
         day = "Thursday"
     Case 5
         day = "Friday"
     Case 6
         day = "Saturday"
     Case Else
         day = "Apocalypse: we're all boned."
 End Select


4 commentaires

Je ne pense pas que le .NET Framework prend en charge votre autre . Dommage...


Probablement quelque chose que MS devrait regarder ... ça arrivera un jour. Bien que je reçois des erreurs avec jour plus tard dans le code si ce n'est pas là: p


Rien n'est faux avec l'utilisation de d'autre . Il y a des moyens plus facilement d'obtenir un nom de jour. Cependant, comme l'a souligné Jon, Dayofweek est un type d'énumissage, il ne sera donc jamais autre chose que 0 à 6.


Et juste pour souligner ce qui a également été dit par d'autres, dimanche est 0, pas 7. msdn.microsoft.com/en-us/library/system.dayofeeak.aspx


6 Réponses :


0
votes

DateTime.dayofweek Code> A > Ne renvoie pas un entier - il renvoie une énumération de type Dayfweek code> . Je m'attendrais à ce que cela soit converti sur le nom automatiquement, mais peut-être qu'il s'agit d'une subtilité VB; Peut-être que quelque chose à voir avec l'utilisation de date code> au lieu de datetime code>? Essayez ceci:

MessageBox.Show(DateTime.Today.DayOfWeek.ToString())


3 commentaires

Cela retournera le nom invariant (US Français); Bien pour déboguer ou stocker dans une base de données ou autre, mais s'il l'affiche, il devrait utiliser quelque chose qui localise la chaîne.


@Ilwlson: Je voudrais juste être édité pour dire quelque chose de similaire, mais moins précisément. Pas Chaque utilisateur doit être localisé, imo. Il y a beaucoup d'applications qui ne seront jamais jamais dans une langue (pensez aux applications internes pour les entreprises non internationales). Si cette langue est l'anglais, cela rend la vie encore plus facile.


Merci. Et ce code est juste de référencer certaines boîtes de texte dans mon formulaire dans une commande horaire. Les données réelles à afficher proviennent d'une base de données :)



2
votes

Il y a un format DateTime pour cela: dddd xxx

avec le cultureInfo Vous pouvez l'obtenir dans une langue spécifique (c'est facultatif)

pour plus d'informations: http://msdn.microsoft.com/en-us/library/ 8kb3ddd4.aspx # ddddspecificateur


0 commentaires

5
votes

Un moyen plus simple: xxx


1 commentaires

@ghord cette technique transforme simplement une énumération en une valeur de chaîne; Vous feriez probablement quelque chose comme datetime.today.tostring ("dddd", nouveau cultureinfo ("PT-BR"))



12
votes

DateTimeFormatinfo.CurrentInfo. GetDayName .


0 commentaires

0
votes

date.today.dayofweek.tostring.tostring vous donnera ce que vous cherchez. Nice et facile.


0 commentaires

-2
votes

Juste au cas où d'autres ont regardé cet exemple. Je crois que cela devrait être un cas 0 pour dimanche.

Case 0 
    day = "Sunday"


2 commentaires

Ce que vous avez ici est un commentaire sur la question, pas une réponse. Afficher des commentaires sous forme de réponse à contourner les règles conduit inévitablement à une intervention du modérateur.


Ça a l'air bien. Mais j'ai cherché cet exemple de code, et il était incorrect au-delà de la question. J'ai passé du temps à le comprendre. Je pense que cela devrait être souligné pour les futurs utilisateurs, même si la question était déjà répondue.