لماذا DateTime.TryParse عودة كاذبة عندما تعطى سلسلة عام الحقيقية؟

StackOverflow https://stackoverflow.com/questions/1013650

  •  06-07-2019
  •  | 
  •  

سؤال

في التعليمات البرمجية أدناه أنا إعطاء وظيفة ل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" يجري أيضا إلى عودة كاذبة لأنها لم تكن موجودة في التقويم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top