Je veux formater la chaîne d'entrée en MM/JJ/AAAA hh: mm: ss format en C #.
La chaîne d'entrée est au format MM/dd/yyyy hh:mm:ss
Par exemple: "04/30/2013 23:00"
J'ai essayé la fonction Convert.ToDateTime()
, mais il considère 4 comme date et 3 comme mois, ce qui n'est pas ce que je veux. En fait, le mois est 04 et la date est 03.
J'ai essayé la fonction DateTime.ParseExact()
également, mais en obtenant une exception.
Je reçois une erreur:
La chaîne n'a pas été reconnue comme un DateTime valide.
Votre chaîne de date et heure ne contient aucune seconde. Vous devez refléter cela dans votre format (supprimez le :ss
).
En outre, vous devez spécifier H
au lieu de h
si vous utilisez des heures sur 24 heures:
DateTime.ParseExact("04/30/2013 23:00", "MM/dd/yyyy HH:mm", CultureInfo.InvariantCulture)
Voir ici pour plus d'informations:
Vous pouvez utiliser DateTime.ParseExact()
method.
Convertit la représentation sous forme de chaîne spécifiée d'une date et d'une heure en son Équivalent DateTime en utilisant le format spécifié et spécifique à la culture informations de format. Le format de la représentation sous forme de chaîne doit correspondre. le format spécifié exactement.
DateTime date = DateTime.ParseExact("04/30/2013 23:00",
"MM/dd/yyyy HH:mm",
CultureInfo.InvariantCulture);
Voici une DEMO
.
hh
est pour l'horloge de 12 heures du 01 au 12, HH
est pour l'horloge de 24 heures du 00 au 23.
Pour plus d'informations, consultez Custom Date and Time Format Strings
essaye ça:
string strTime = "04/30/2013 23:00";
DateTime dtTime;
if(DateTime.TryParseExact(strTime, "MM/dd/yyyy HH:mm",
System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.None, out dtTime))
{
Console.WriteLine(dtTime);
}
changer la culture et essayer comme cela pourrait fonctionner pour vous
string[] formats= { "MM/dd/yyyy HH:mm" }
var dateTime = DateTime.ParseExact("04/30/2013 23:00",
formats, new CultureInfo("en-US"), DateTimeStyles.None);
Vérifiez les détails: Méthode DateTime.ParseExact (String, String [], IFormatProvider, DateTimeStyles)
DateTime dt1 = DateTime.ParseExact([YourDate], "dd-MM-yyyy HH:mm:ss",
CultureInfo.InvariantCulture);
Notez l'utilisation de HH (horloge sur 24 heures) plutôt que de hh (horloge sur 12 heures) et l'utilisation de InvariantCulture car certaines cultures utilisent des séparateurs autres que le slash.
Par exemple, si la culture est de-DE, le format "jj/mm/aaaa" correspondrait à une période comme séparateur (31.01.2011).
Le code ci-dessous a fonctionné pour moi:
string _stDate = Convert.ToDateTime(DateTime.Today.AddMonths(-12)).ToString("MM/dd/yyyy");
String format ="MM/dd/yyyy";
IFormatProvider culture = new System.Globalization.CultureInfo("fr-FR", true);
DateTime _Startdate = DateTime.ParseExact(_stDate, format, culture);