2016-10-19 2 views
0

Supposons que je possède une entrée de type datetring i.e "30.03.2016" (c'est-à-dire en supposant que ce soit un format de langue) mais ma culture actuelle est les États-Unis. Je veux convertir l'entrée en culture de paramètres de paramètres régionaux sauvegardés sous Windows. J'utilise le format ci-dessous pour la conversion, mais me donne datetime invalide.Convertir n'importe quelle chaîne de date au format de date de culture actuel

var myDateTimeValue = "30.03.2015"; 
DateTime myDateTime = DateTime.Parse(myDateTimeValue); 
var dateingddmmyy = myDateTime.ToString(new CultureInfo("sv-SE")); 
Console.Write(dateingddmmyy); 

Veuillez nous faire savoir comment convertir n'importe quel type de chaîne de date au format de culture actuel.

+3

"Tout format de langue" est problématique. Le «05/06/2016» devrait-il être le 5 juin (selon le format britannique) ou le 6 mai (selon le format américain)? –

+0

votre code fonctionne bien sur mon PC –

+0

@JonSkeet mes exigences "Tout format de langue" est-il possible de convertir ou non ???? – stylishCoder

Répondre

1

La date source pourrait être quelque chose comme:

  • dd-mm-aaaa
  • jj/mm/aaaa,
  • mm-jj-aaaa,
  • mm/jj/aaaa
  • aaaa-mm-jj

Je vous suggère de prendre un peu de recul et d'explorer ce que vous essayez de résoudre dans plus de détails. Peut-être que vous n'avez pas besoin de convertir à partir de n'importe quel format de données, peut-être qu'il existe un moyen de fournir un tel.

+0

Merci @David Rutkowski vient de poster ma réponse – stylishCoder

0

Ci-dessous j'ai résolu mon problème:

string[] formats = {"M/d/yyyy", "MM/dd/yyyy", 
           "d/M/yyyy", "dd/MM/yyyy", 
           "yyyy/M/d", "yyyy/MM/dd", 
           "M-d-yyyy", "MM-dd-yyyy", 
           "d-M-yyyy", "dd-MM-yyyy", 
           "yyyy-M-d", "yyyy-MM-dd", 
           "M.d.yyyy", "MM.dd.yyyy", 
           "d.M.yyyy", "dd.MM.yyyy", 
           "yyyy.M.d", "yyyy.MM.dd", 
           "M,d,yyyy", "MM,dd,yyyy", 
           "d,M,yyyy", "dd,MM,yyyy", 
           "yyyy,M,d", "yyyy,MM,dd", 
           "M d yyyy", "MM dd yyyy", 
           "d M yyyy", "dd MM yyyy", 
           "yyyy M d", "yyyy MM dd" 
           }; 
       DateTime dateValue; 

        foreach (string dateStringFormat in formats) 
        { 
         if (DateTime.TryParseExact(strDateTime, dateStringFormat,CultureInfo.CurrentCulture,DateTimeStyles.None, 
                out dateValue)) 
         { 
          return dateValue.ToShortDateString(); 
         } 
        } 
+0

Qu'est-ce que quelqu'un utilisera le format de date personnalisé qui n'est pas présent dans le tableau de formats? –

+0

seule solution que vous devez ajouter le format dans le tableau d'abord..je ne pense pas que leur alternative à la solution ci-dessus .. parce que si l'utilisateur entre une date, le format doit être spécifié dans le tableau afin que le casting est fait cette base .. @DawidRutkowski ..restons si vous suggérez quelque chose de mieux le plus bienvenue ... – stylishCoder

+0

Pourquoi ne pas simplement ajouter une validation dans le champ où l'utilisateur est censé taper une date? Ensuite, vous serez sûr que la date sera toujours dans le même format. –