web-dev-qa-db-fra.com

Analyser une chaîne contenant la date et l'heure dans un format personnalisé

J'ai une chaîne du format suivant "ORDER20100322194007", où 20100322 est une date et 194007 est un temps. Comment analyser une chaîne et obtenir l'objet DateTime contenu?

47
akrisanov

Commencera-t-il toujours par ORDER?

string pattern = "'ORDER'yyyyMMddHHmmss";
DateTime dt;
if (DateTime.TryParseExact(text, pattern, CultureInfo.InvariantCulture, 
                           DateTimeStyles.None,
                           out dt))
{
    // dt is the parsed value
} 
else 
{
    // Invalid string
}

Si la chaîne non valide doit lever une exception, utilisez alors DateTime.ParseExact au lieu de DateTime.TryParseExact

Si elle ne commence pas toujours par "ORDER", faites tout ce que vous devez pour obtenir uniquement la partie date et heure, et supprimez "'ORDER'" du modèle de format ci-dessus.

87
Jon Skeet

Vous pouvez utiliser la méthode DateTime.ParseExact pour spécifier le format à utiliser lors de l'analyse.

9
Giorgi

Si vous n'avez pas une structure fixe de votre chaîne, disons que l'ordre ne sera pas toujours là, vous pouvez utiliser regex pour séparer les nombres et les caractères, puis utiliser la fonction de conversion en datetime pour les nombres séparés.

1
Samiksha