2010-11-10 5 views
1

Comment puis-je convertir la date anglaise 10/29/2010 ou à toute date de langue au format de la date de la culture de l'utilisateurchaîne Convertir 10/29/2010 selon les utilisateurs culture

J'utilise le code suivant

CultureInfo cultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture; 
      cultureInfo.DateTimeFormat. 
      string lng = cultureInfo.TwoLetterISOLanguageName; 
      DateTime dateTime = DateTime.Parse("10/29/2010", cultureInfo); 

mais il génère une erreur lorsque j'essaie de l'analyser.

Toute idée comment puis-je résoudre ce problème

Thanx

Répondre

3

Utilisez ParseExact avec l'anglais (ou invariant) culture pour convertir la chaîne en un datetime, vous pouvez utiliser ToString à la sortie dans à la date de l'utilisateur format.

// this is in "d" (= short date) format of the invariant culture 
var englishDateString = "10/29/2010"; 

// convert it to a datetime 
var date = DateTime.ParseExact(englishDateString, "d", CultureInfo.InvariantCulture); 

// now you can output the date in the user's culture 
var localizedDateString = date.ToString("d"); 

Si vous voulez être explicite, vous pouvez ajouter CultureInfo.CurrentCulture comme second paramètre à ToString, mais il est pas nécessaire, puisque c'est la valeur par défaut si aucune culture est spécifiée.

1

Voici un exemple d'analyse d'une date US:

DateTime.Parse("10/29/2010", new CultureInfo("en-US")); 
0

Utilisation DateTime.ParseExact("10/29/2010", "MM/dd/yyyy", CultureInfo.InvariantCulture); au lieu de DateTime.Parse

Une fois que vous avez un DateTime, il n'est plus lié à une culture spécifique, mais peut être sortie cependant tu le veux. Habituellement, c'est avec l'une des méthodes DateTime .ToString, ou des raccourcis comme .ToShortDateString(), qui utilise la culture du fil en cours.

Editer: Remarque, cela aide si je mets les mois et les jours dans les bons endroits. Oups.

0

Utilisez ceci:

public static string ChangeDateToUserFormat(string dateValue, string dateCulture) 
     { 
      CultureInfo dateCultureInfo = CultureInfo.GetCultureInfoByIetfLanguageTag(dateCulture); 
      DateTime date = DateTime.Parse(dateValue, dateCultureInfo); 
      return date.ToString(CultureInfo.CurrentCulture); 
     } 

Par exemple:

string date = ChangeDateToUserFormat("10\29\2010", "en-US"); 
1

j'ai eu la même douleur face à la conversion de la date et j'ai utilisé une fonction (le code ci-dessous), vous pouvez le modifier comme vous le souhaitez . essayer ou obtenir des idées de lui et laissez-moi savoir si elle était utile


Imports Microsoft.VisualBasic Imports System.Globalization Public Class DatumKonvert1 
Public Shared Function DK1(ByVal myDMstring As String) As Date 
    Dim source As String = myDMstring 
    Dim d As DateTime = DateTime.ParseExact(source, "d'/'M'/'yyyy", CultureInfo.InvariantCulture) 
    Dim resultMydate As String = d.ToString("M'/'d'/'yyyy") 
    Dim mdx = DateTime.ParseExact(resultMydate, "M'/'d'/'yyyy", CultureInfo.InvariantCulture) 
    Return mdx  End Function End Class 
Questions connexes