Je suis nouveau sur DotNet et C #. Je souhaite convertir une chaîne au format mm/dd/yyyy
en objet DateTime
. J'ai essayé la fonction d'analyse comme ci-dessous, mais une erreur d'exécution s'est produite.
DateTime dt=DateTime.Parse("24/01/2013");
Des idées sur comment puis-je le convertir en date/heure?
Vous devez utiliser DateTime.ParseExact
au format _"dd/MM/yyyy"
_
_DateTime dt=DateTime.ParseExact("24/01/2013", "dd/MM/yyyy", CultureInfo.InvariantCulture);
_
C'est plus sûr si vous utilisez _d/M/yyyy
_ pour le format, car il gérera à la fois les chiffres à un chiffre et les chiffres à deux chiffres jour/mois. Mais cela dépend vraiment si vous attendez des valeurs à un ou deux chiffres.
Votre format de date _day/Month/Year
_ pourrait être un format de date acceptable pour certaines cultures. Par exemple, pour Culture canadienne _en-CA
_ _DateTime.Parse
_ fonctionnerait comme suit:
_DateTime dt = DateTime.Parse("24/01/2013", new CultureInfo("en-CA"));
_
Ou
_System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-CA");
DateTime dt = DateTime.Parse("24/01/2013"); //uses the current Thread's culture
_
Les deux lignes ci-dessus fonctionnent car le format de la chaîne est acceptable pour la culture _en-CA
_. Puisque vous ne fournissez aucune culture à votre appel _DateTime.Parse
_, votre culture actuelle est utilisée pour l'analyse qui ne prend pas en charge le format de date. En savoir plus à ce sujet à DateTime.Parse .
Une autre méthode d’analyse utilise DateTime.TryParseExact
_DateTime dt;
if (DateTime.TryParseExact("24/01/2013",
"d/M/yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out dt))
{
//valid date
}
else
{
//invalid date
}
_
Le groupe de méthodes TryParse
du .Net Framework ne génère pas d'exception pour les valeurs non valides, mais renvoie une valeur bool
indiquant le succès ou l'échec de l'analyse.
Notez que j'ai utilisé seul d
et M
pour le jour et le mois, respectivement. Single d
et M
fonctionnent pour les jours et les mois à un ou deux chiffres. Ainsi, pour le format _d/M/yyyy
_, les valeurs valides pourraient être:
Pour en savoir plus, consultez: Chaînes de format de date et d’heure personnalisées
utiliser DateTime.ParseExact
string strDate = "24/01/2013";
DateTime date = DateTime.ParseExact(strDate, "dd/MM/YYYY", null)
null
utilisera la culture actuelle, ce qui est quelque peu dangereux. Essayez de fournir une culture spécifique
DateTime date = DateTime.ParseExact(strDate, "dd/MM/YYYY", CultureInfo.InvariantCulture)
Vous pouvez utiliser le format _"dd/MM/yyyy"
_ pour l’utiliser dans DateTime.ParseExact
.
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 les informations de format spécifiques à la culture. Le format de la représentation de chaîne doit correspondre exactement au format spécifié.
_DateTime date = DateTime.ParseExact("24/01/2013", "dd/MM/yyyy", CultureInfo.InvariantCulture);
_
Voici un DEMO
.
Pour plus d'informations, consultez Custom Date and Time Format Strings