عدم اجرای صحیح اختلاف تاریخ
سلام دوستان وقت بخیر.
من یه مشکل عجیب دارم که هم با تاریخ شمسی تست کردم هم با تاریخ میلادی جواب صحیح رو نمیگیرم.
اتمام بیمه من 1400/02/26 هست.
اتمام گواهینامه من هم 1400/03/20 هست.
من میخوام بگم که اگه تاریخ اتمام گواهینامه بیشتر از 15 روز از تاریخ اتمام بیمه نامه هست بهم اخطار بده.
اومدم کد زیر رو نوشتم
DateTime EndBimeh = p.ToDateTime(yearBimeh, monthBimeh, dayBimeh, 0,0,0,0);
DateTime Etebar = p.ToDateTime(yearEtebar, monthEtebar, dayEtebar, 0,0,0,0);
if (DateTime.Compare(Etebar.AddDays(-15),EndBimeh )<0)
{
XtraMessageBox.Show("تاریخ اعتبار بیشتر از 15 روز با تاریخ بیمه اختلاف دارد.لطفا بررسی نمایید.", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
else if(DateTime.Compare(Etebar.AddDays(-15), EndBimeh ) == 0)
{
XtraMessageBox.Show("1", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
else if (DateTime.Compare(Etebar.AddDays(-15), EndBimeh ) > 0)
{
XtraMessageBox.Show("2", "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
تاریخ هرچی میزنم چه دقیقا 15 روز چه کوچیکتر از 15 روز چه بیشتر از 15 روز همیشه خطای 2 رو نشون میده.
کجاش اشتباه کردم !!!:متفکر:
نقل قول: عدم اجرای صحیح اختلاف تاریخ
سلام
اول اینکه شرطت اشتباهه شما باید if سوم رو بیاری به جای if اول، در حال حاضر شرط شما برعکس میشه، یعنی تاریخ گواهینامه کوچکتر بودنش از تاریخ بیمه محاسبه میشه نه بزرگتر بودنش
بعد به نظرم کدتون اصلا خوانا نیست و یکم ادم رو گیج میکنه، نیازی به این همه پیچیدگی نیستش، کدتون رو بصورت خیلی ساده تر میتونید بنویسید:var difference = Etebar.Subtract(EndBimeh).TotalDays;
if(difference > 15)
Console.WriteLine("is greater than 15 days!");