2009-04-24 3 views
1

J'ai utilisé le code suivant.Conversion de jj/mm/aaaa en mm/jj/aaaa

string result = DateTime.ParseExact("24/5/2009 3:40:00 AM", 
            "d/M/yyyy h:mm", 
            CultureInfo.InvariantCulture) 
         .ToString("M/d/yyyy h:mm"); 

Dans mon temps textbox après 12'0 Clock (pour par exemple: 24/5/2009 14:00) Je veux convertir au format en 24/5/2009 2:00 PM .Peut-on donner le code approprié?

+1

Est-ce est double de http://stackoverflow.com/questions/420623/how-to -convertir-date-en-mm-jj-aa-format-en-c? – unwind

+1

Non, cette question ne concerne que le formatage d'une date en sortie, ne convertissant pas d'un format à un autre –

Répondre

4

En supposant que le début de votre date d'origine comme une chaîne et que vous voulez à la fin comme une autre chaîne, vous pourriez faire quelque chose comme ça en C#:

string from = "24/5/2009 3:40:00 AM"; 
DateTime dt = DateTime.ParseExact(from, "d/M/yyyy h:mm:ss tt", , System.Globalization.CultureInfo.InvariantCulture); 
string to = dt.ToString("MM/dd/yyyy hh:mm:ss tt", System.Globalization.CultureInfo.InvariantCulture); 

* Edit: Correction des chaînes de formatage. Il suppose que vos chaînes d'origine ne comportent que des valeurs de jour, de mois et d'heure à un chiffre lorsqu'elles sont inférieures à 10. Elles supposent également que vous souhaitez qu'elles soient toutes des valeurs à deux chiffres pour le résultat.

Voici la documentation MSDN sur le sujet: Custom Date and Time Format Strings

+2

Vous devez ajouter System.Globalization.CultureInfo.InvariantCulture comme deuxième paramètre de l'appel dt.ToString afin d'assurer que la chaîne formatée utilise en effet les caractères '/': string to = dt.ToString ("MM/jj/aaaa hh: mm: ff tt", System.Globalization.CultureInfo.InvariantCulture); –

+0

Bonne prise, fini. –

+1

La chaîne de formatage est incorrecte."ff" n'est pas une seconde, c'est une fraction de secondes. Vous devez utiliser "ss" pour obtenir les secondes. – Guffa

0

Une valeur DateTime n'a pas un format à tout, donc si le sou rce est une valeur datetime, ce n'est pas une conversion, mais une simple question de formatage de la sortie.

Vous pouvez utiliser la chaîne de foration personnalisée "M'/'d'/'yyyy h':'mm':'ss tt" pour obtenir exactement ce format. (Votre question mentionne deux formats différents, donc je suppose que c'est celui représenté par les données d'exemple que vous voulez, celui qui a secondes.)

Exemple:

Dim result As String = source.ToString("M'/'d'/'yyyy h':'mm':'ss tt") 

Si la source est une chaîne pour que ce soit réellement une conversion dont vous avez besoin, vous pouvez utiliser des opérations de chaîne pour hacher la chaîne en composants et la réorganiser, ou vous pouvez analyser la chaîne en valeur DateTime et la reformater en une nouvelle chaîne.

Exemple:

Dim source As String = "24/5/2009 3:40:00 AM" 
Dim d As DateTime = DateTime.ParseExact(source, "d'/'M'/'yyyy h':'mm':'ss tt", CultureInfo.InvariantCulture) 
Dim result As String = d.ToString("M'/'d'/'yyyy h':'mm':'ss tt") 

Ou:

Dim source As String = "24/5/2009 3:40:00 AM" 
Dim d As String() = source.Split("/".ToCharArray(), 3) 
string result = d(1) + "/" + d(0) + "/" + d(2) 
0

Utilisez cette

sql = "INSERT INTO emp(ID, firstname, lastname, DOB) VALUES(Null, '" & txtFirstName.Text.Trim & "','" & txtLastName.Text.Trim & "', '" & dpDOB.Value.Date.ToString("yyyy-MM-dd") & "');" 

    mMySQLConnection.Open(); 
    comm = New MySqlCommand(sql, mMySQLConnection); 

    comm.CommandType = CommandType.Text; 
    comm.ExecuteNonQuery(); 
    mMySQLConnection.Close();