PDA

View Full Version : سوال: عدم اجرای صحیح اختلاف تاریخ



رامین مرادی
یک شنبه 20 مهر 1399, 12:22 عصر
سلام دوستان وقت بخیر.
من یه مشکل عجیب دارم که هم با تاریخ شمسی تست کردم هم با تاریخ میلادی جواب صحیح رو نمیگیرم.
اتمام بیمه من 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 رو نشون میده.
کجاش اشتباه کردم !!!:متفکر:

mr.sirwan
یک شنبه 20 مهر 1399, 12:43 عصر
سلام
اول اینکه شرطت اشتباهه شما باید if سوم رو بیاری به جای if اول، در حال حاضر شرط شما برعکس میشه، یعنی تاریخ گواهینامه کوچکتر بودنش از تاریخ بیمه محاسبه میشه نه بزرگتر بودنش
بعد به نظرم کدتون اصلا خوانا نیست و یکم ادم رو گیج میکنه، نیازی به این همه پیچیدگی نیستش، کدتون رو بصورت خیلی ساده تر میتونید بنویسید:
var difference = Etebar.Subtract(EndBimeh).TotalDays;
if(difference > 15)
Console.WriteLine("is greater than 15 days!");