لماذا DateTime.TryParse عودة كاذبة عندما تعطى سلسلة عام الحقيقية؟
سؤال
في التعليمات البرمجية أدناه أنا إعطاء وظيفة لsTransactionDate = "1999" وأنا أحاول لاستخدامه سرا لموعد س / س / 1999.
DateTime dTransactionDate = new DateTime();
if(DateTime.TryParse(sTransactionDate, out dTransactionDate))
{ //Happy
}else
{ //Sad
}
وإذا كانت السلسلة "1999" سيكون دائما في نهاية المطاف في حزينا. أي أفكار؟
المحلول
وحاول شيئا من هذا القبيل (ضبط CultureInfo
وDateTimeStyles
بشكل مناسب):
DateTime.TryParseExact
("1999",
"yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out dTransactionDate)
نصائح أخرى
وماذا عن ...
DateTime dTransactionDate = new DateTime();
if (DateTime.TryParseExact(sTransactionDate, "yyyy",
CultureInfo.InvariantCulture, DateTimeStyles.None, out dTransactionDate))
{
// Happy
}
else
{
// Sad
}
... أو حتى مجرد ...
DateTime dTransactionDate = new DateTime(int.Parse(sTransactionDate), 1, 1);
// Happy
و"1999" ليس الآن، انها سنة محاولة 1/1/1999
وتحقق أيضا على تقويم النظام أن التاريخ الذي تحاول تحليل موجودة. تماما مثل ستجد "1949/02/29" يجري أيضا إلى عودة كاذبة لأنها لم تكن موجودة في التقويم.
لا تنتمي إلى StackOverflow