J'analyse une valeur DateTime dans une page ASP.NET WebForms
Et la chaîne de date continue à être rejetée par la méthode DateTime.TryParseExact()
même si elle correspond clairement à l'une des chaînes de format fournies.
Cela semble échouer sur ma machine de développement à la maison mais sur le serveur de production. Je pense donc aux paramètres de date locaux, mais cette erreur se produit même lorsque je fournis un objet IFormatProvider (CultureInfo)
en tant que paramètre.
Voici le code:
DateTime startDate;
string[] formats = { "dd/MM/yyyy", "dd/M/yyyy", "d/M/yyyy", "d/MM/yyyy",
"dd/MM/yy", "dd/M/yy", "d/M/yy", "d/MM/yy"};
var errStart = row.FindControl("errStartDate"); //my date format error message
if (!DateTime.TryParseExact(txtStartDate.Text, formats, null, DateTimeStyles.None, out startDate))
{
errStart.Visible = true; //we get here even with a string like "20/08/2012"
return false;
}
else
{
errStart.Visible = false;
}
Remarque Je donne un null FormatProvider
Dans ce qui précède, mais le même problème se produit lorsque je fournis un objet CultureInfo
comme (CultureInfo provider = new CultureInfo("en-US"))
Pour ce paramètre.
Qu'est-ce que je rate?
Essayer:
DateTime.TryParseExact(txtStartDate.Text, formats,
System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.None, out startDate)
Ici, vous pouvez vérifier quelques choses.
DateTime.TryParseExact
. Consultez la liste complète des formats disponibles ici .CultureInfo.InvariantCulture
Qui est plus susceptible d'ajouter un problème. Ainsi, au lieu de passer une valeur NULL
ou à la valeur CultureInfo provider = new CultureInfo("en-US")
, vous pouvez l'écrire comme. .
if (!DateTime.TryParseExact(txtStartDate.Text, formats,
System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.None, out startDate))
{
//your condition fail code goes here
return false;
}
else
{
//success code
}
C’est la méthode simple, utiliser ParseExact
CultureInfo provider = CultureInfo.InvariantCulture;
DateTime result;
dateString = "Sun 08 Jun 2013 8:30 AM -06:00";
format = "ddd dd MMM yyyy h:mm tt zzz";
result = DateTime.ParseExact(dateString, format, provider);
Cela devrait fonctionner pour vous.
Essayez C # 7.0
var Dob= DateTime.TryParseExact(s: YourDateString,format: "yyyyMMdd",provider: null,style: 0,out var dt)
? dt : DateTime.Parse("1800-01-01");
string DemoLimit = "02/28/2018";
string pattern = "MM/dd/yyyy";
CultureInfo enUS = new CultureInfo("en-US");
DateTime.TryParseExact(DemoLimit, pattern, enUS,
DateTimeStyles.AdjustToUniversal, out datelimit);
Pour plus https://msdn.Microsoft.com/en-us/library/ms131044 (v = vs.110) .aspx