Partager via


Analyse des chaînes de date/heure

Les méthodes d'analyse convertissent la représentation sous forme de chaîne d'une date et heure en un objet DateTime équivalent. Les méthodes Parse et TryParse convertissent l'une des nombreuses représentations communes de date et heure. Les méthodes ParseExact et TryParseExact convertissent une représentation sous forme de chaîne exactement conforme au modèle spécifié par une chaîne de format de date et d'heure.

L'analyse est influencée par les propriétés d'un fournisseur de format qui donne des informations telles que les chaînes utilisées pour les séparateurs de date et d'heure, et les noms de mois, jours et ères. Le fournisseur de format est l'objet DateTimeFormatInfo en cours qui est fourni implicitement par la culture du thread en cours ou explicitement par le paramètre IFormatProvider d'une méthode d'analyse. Pour le paramètre IFormatProvider, spécifiez un objet CultureInfo qui représente une culture, ou un objet DateTimeFormatInfo.

La représentation sous forme de chaîne d'une date à analyser doit inclure le mois et au moins un jour ou une année. La représentation d'une heure sous forme de chaîne doit inclure l'heure et au moins les minutes ou l'indicateur AM/PM. Toutefois, si possible, l'analyse fournit des valeurs par défaut pour les composants omis. Une date manquante a comme valeur par défaut la date du jour, une année manquante a comme valeur par défaut l'année en cours, un jour manquant du mois a comme valeur par défaut le premier jour du mois, et une heure manquante a comme valeur par défaut minuit.

Si la représentation sous forme de chaîne spécifie uniquement une heure, l'analyse retourne un objet DateTime avec les propriétés Year, Month et Day définies sur les valeurs correspondantes de la propriété Today. Toutefois, si la constante NoCurrentDateDefault est spécifiée dans la méthode d'analyse, les propriétés d'année, mois et jour résultantes ont la valeur 1.

Si le fuseau horaire est omis de la représentation sous forme de chaîne, l'analyse retourne un objet DateTime avec la propriété Kind définie sur la valeur Unspecified. Si le fuseau horaire est spécifié, par exemple par l'offset du fuseau horaire "-07:00", l'analyse retourne un objet DateTime avec la propriété Kind définie sur Local et sa valeur est ajustée au fuseau horaire local de votre ordinateur. Vous pouvez modifier ce comportement en utilisant une constante DateTimeStyles avec la méthode d'analyse.

Le fournisseur de format est également utilisé pour interpréter une date numérique ambiguë. Par exemple, il n'est pas évident de savoir quels composants de la date représentée par la chaîne "02/03/04" correspondent au mois, au jour et à l'année. Dans ce cas, les composants sont interprétés d'après l'ordre des formats de date similaires dans le fournisseur de format.

Parse

L'exemple de code suivant illustre l'utilisation de la méthode Parse pour convertir une chaîne en DateTime. Cet exemple fait appel à la culture associée au thread en cours pour effectuer à l'analyse. Si le CultureInfo associé à la culture en cours ne peut analyser la chaîne d'entrée, une exception FormatException est levée.

Dim MyString As String = "Jan 1, 2002"
Dim MyDateTime As DateTime = DateTime.Parse(MyString)
Console.WriteLine(MyDateTime)
string MyString = "Jan 1, 2002";
DateTime MyDateTime = DateTime.Parse(MyString);
Console.WriteLine(MyDateTime);

Vous pouvez aussi spécifier un CultureInfo qui prend la valeur d'une des cultures définies par cet objet. L'exemple de code suivant utilise un fournisseur de format pour analyser une chaîne en allemand dans DateTime. Un CultureInfo représentant la culture de-DE est défini et passé avec la chaîne analysée pour assurer l'analyse réussie de cette chaîne particulière. Ceci exclut tous les paramètres contenus dans CurrentCulture de CurrentThread.

Imports System.Globalization

Dim MyCultureInfo As CultureInfo = new CultureInfo("de-DE")
Dim MyString As String = "12 Juni 2002"
Dim MyDateTime As DateTime = DateTime.Parse(MyString, MyCultureInfo)
Console.WriteLine(MyDateTime)
using System.Globalization;

CultureInfo MyCultureInfo = new CultureInfo("de-DE");
string MyString = "12 Juni 2002";
DateTime MyDateTime = DateTime.Parse(MyString, MyCultureInfo);
Console.WriteLine(MyDateTime);

L'exemple de code suivant utilise l'énumération DateTimeStyles pour spécifier que les informations de date et d'heure en cours ne doivent pas être ajoutées à DateTime pour les champs que la chaîne ne définit pas.

Imports System.Globalization

Dim MyCultureInfo As CultureInfo = new CultureInfo("de-DE")
Dim MyString As String = "12 Juni 2002"
Dim MyDateTime As DateTime = DateTime.Parse(MyString, MyCultureInfo, DateTimeStyles.NoCurrentDateDefault)
Console.WriteLine(MyDateTime)
using System.Globalization;

CultureInfo MyCultureInfo = new CultureInfo("de-DE");
string MyString = "12 Juni 2002";
DateTime MyDateTime = DateTime.Parse(MyString, MyCultureInfo, DateTimeStyles.NoCurrentDateDefault);
Console.WriteLine(MyDateTime);

ParseExact

La méthode ParseExact convertit uniquement le modèle de chaîne spécifié en DateTime. Lorsqu'une chaîne dans une forme qui n'est pas la forme spécifiée est passée à cette méthode, une exception FormatException est levée. Vous pouvez spécifier un des spécificateurs de format standard de date et d'heure ou une combinaison limitée de spécificateurs de format personnalisé de date et d'heure. En utilisant les spécificateurs de format personnalisés, il vous est possible de construire une chaîne de reconnaissance personnalisée. Pour une explication des spécificateurs, consultez la section sur les chaînes de format de date et d'heure.

Dans l'exemple de code suivant, la méthode ParseExact reçoit un objet chaîne à analyser, puis spécificateur de format, puis un objet CultureInfo. Cette méthode ParseExact peut uniquement analyser des chaînes qui exhibent le format de date longue dans la culture en-US.

Imports System.Globalization

Dim MyCultureInfo As CultureInfo = new CultureInfo("en-US")
Dim MyString As String = "Tuesday, April 10, 2001"
Dim MyDateTime As DateTime = DateTime.ParseExact(MyString, "D", MyCultureInfo)
Console.WriteLine(MyDateTime)
using System.Globalization;

CultureInfo MyCultureInfo = new CultureInfo("en-US");
string MyString = " Tuesday, April 10, 2001";
DateTime MyDateTime = DateTime.ParseExact(MyString, "D", MyCultureInfo);
Console.WriteLine(MyDateTime);

Voir aussi

Autres ressources

Analyse de chaînes
Mise en forme des types
Conversion de types