12
votes

Conversion du nom de mois en Integer

J'ai fait une recherche rapide pour cela et j'ai été surpris de ne pas le trouver nulle part.

essentiellement à la recherche de convertir des noms de mois complets (janvier, septembre, etc.) au numéro équivalent qui serait utilisé dans le format MM / DD / AAAA.

Je peux mettre en place mon propre tableau et le tirer en conséquence, mais il doit y avoir une méthode rapide et directe déjà. Droite?


2 commentaires

La quantité de caractères qu'il vous serait prise pour écrire la méthode d'extension est probablement égale à la longueur de votre question :)


Tu as probablement raison. :) Mais de cette façon, je me rends à redonner à la communauté puisque ce n'était pas facile à trouver en premier lieu.


6 Réponses :


19
votes

Vous pouvez utiliser la chaîne de format mmmm code> pour le nom complet du mois.

voir Cordes de format DateTime personnalisé sur MSDN. P>

Dim fullMonthName as DateTime
fullMonthName = DateTime.ParseExact("26 January 2010", "dd MMMM yyyy", 
                                           CultureInfo.InvariantCulture)


0 commentaires

23
votes
Dim monthName = "September"
Dim monthNumber = DateTime.ParseExact(monthName, "MMMM", CultureInfo.CurrentCulture).Month
If you are basing this on user input, I think this is the cleanest (especially if you are expecting multiple cultures to use this).  DateTime.ParseExact will allow you to input any sort of input and translate it into a DateTime, then pluck off whatever part of it you care about.If, however, this isn't have on user input, I would have to suggest using some sort of static collection (whether a dictionary or an enum).

3 commentaires

Ça a l'air bien, mais je pense que cela devrait être un nom de mois à l'intérieur du parseexact.


Bonjour, mais cela donne un numéro de mois à 1 chiffre, comment puis-je obtenir un numéro de mois à 2 chiffres?


@sephtian, cela redonne un entier . Si vous le souhaitez deux chiffres, convertissez-le en une chaîne avec ce formatage, c'est-à-dire mois-mois.tostring ("00")



0
votes

Appelez-moi fou, mais n'est-ce pas exactement ce qu'est un énumé? Peut-être mérite d'être envisagé de garder le code aussi simple que possible. http://visualbasic.about.com/od/usenvbnet/a/enum01. htm


2 commentaires

VB n'est pas ma spécialité, mais en général, je n'apporterais pas une bibliothèque supplémentaire uniquement pour traduire 12 chaînes en chiffres. Peut-être s'il y avait d'autres fonctions utiles là-bas ...


J'utilise déjà la bibliothèque DateTime pour d'autres choses, je vérifiais simplement une manière intégrée de faire cette conversion.



-2
votes

Cela peut sonner longtemps, pourquoi ne pas utiliser une instruction IF ou Sélectionner un cas.

If Month = "January" Then MonthNum = "1"
Else If Month = "February" Then .......


0 commentaires

0
votes

Bien dans mon cas, j'ai utilisé ce truc

  1. Créer 2 Combobox
  2. Stuff ComboBox1 avec les noms de mois
  3. Stuff ComboBox2 avec des années

    puis ce xxx


0 commentaires

2
votes

C'est vieux mais quelque chose que je cherchais, il suffit d'incuer quelqu'un d'autre à la recherche d'une solution facile .... xxx

im sera égal à 6 < / p>


0 commentaires