PDA

View Full Version : اختلاف بین دوتاریخ



amirkazem
جمعه 22 مرداد 1395, 03:16 صبح
باسلام خدمت اساتید،
دریک برنامه ازتاریخ شمسی(solar calander)(نوشته شده توسط آقای خرسندی) استفاده می کنیم. نوع دیتا برای فیلدتاریخ درجداول مختلف برنامه هم ازنوع(text)درنظرگرفته ایم.
دریکی ازقسمتهای برنامه می خواهیم یک تاریخ(DBEdit1)را از تاریخ دیگر(DBEdit2) کم کنیم.(یعنی اختلاف روزهای بین دوتاریخ رابدست بیاوریم). تاریخ هم به این صورت هستش: 1395/05/22
دوستان محبت بفرمایید که چگونه می تونیم این مقایسه رو انجام بدیم.
ممنون!

amirkazem
شنبه 23 مرداد 1395, 01:06 صبح
دوستان کسی نیست راهنمایی کنه؟

hp1361
شنبه 23 مرداد 1395, 11:24 صبح
باسلام خدمت اساتید،
دریک برنامه ازتاریخ شمسی(solar calander)(نوشته شده توسط آقای خرسندی) استفاده می کنیم. نوع دیتا برای فیلدتاریخ درجداول مختلف برنامه هم ازنوع(text)درنظرگرفته ایم.
دریکی ازقسمتهای برنامه می خواهیم یک تاریخ(DBEdit1)را از تاریخ دیگر(DBEdit2) کم کنیم.(یعنی اختلاف روزهای بین دوتاریخ رابدست بیاوریم). تاریخ هم به این صورت هستش: 1395/05/22
دوستان محبت بفرمایید که چگونه می تونیم این مقایسه رو انجام بدیم.
ممنون!

سلام

اگر تعداد روز بین دو تاریخ رو لازم داری، میتونی از تابع زیر استفاده کنی:(unit System.DateUtils;)


function DaysBetween(const ANow, AThen: TDateTime): Integer;


البته لازمه قبلش تاریخ های ذخیره شده در بانک رو به میلادی تبدیل کنی.(قبلش چک کن ببین تقویم آقای خورسندی همین تابع رو شاید برای مقادیر شمسی پیاده سازی کرده باشه و نیازی به تبدیل تاریخ نباشه)

موفق باشیم

یوسف زالی
شنبه 23 مرداد 1395, 17:13 عصر
می تونید از یونیتی که در امضای من هست استفاده کنید.
ورودی تاریخ ها بصورت رشته ای شمسی هست.

m-khorsandi
یک شنبه 24 مرداد 1395, 11:23 صبح
باسلام خدمت اساتید،
دریک برنامه ازتاریخ شمسی(solar calander)(نوشته شده توسط آقای خرسندی) استفاده می کنیم. نوع دیتا برای فیلدتاریخ درجداول مختلف برنامه هم ازنوع(text)درنظرگرفته ایم.
دریکی ازقسمتهای برنامه می خواهیم یک تاریخ(DBEdit1)را از تاریخ دیگر(DBEdit2) کم کنیم.(یعنی اختلاف روزهای بین دوتاریخ رابدست بیاوریم). تاریخ هم به این صورت هستش: 1395/05/22
دوستان محبت بفرمایید که چگونه می تونیم این مقایسه رو انجام بدیم.
ممنون!

کامپوننت SolarCalendar تابعی به نام DaysBetween برای بدست آوردن اختلاف بین دو تاریخ دارد.

amirkazem
یک شنبه 24 مرداد 1395, 22:35 عصر
ضمن تشکرمجددازشمادوستان وتشکرویژه ازدوست خوبم، مهندس قره جانلو
ایشون ساده ترین روش رابه بنده پیشنهادکردند.


var sal,mah,rooz,sal1,sal2,mah1,mah2,rooz1,rooz2:integ er; date1,date2:string;
begin
date1:=DBEdit1.Text;
date2:=SolarDatePicker1.Text;
sal1:=strtoint(Date1[1]+Date1[2]+Date1[3]+Date1[4]);
mah1:=strtoint(Date1[6]+Date1[7]);
rooz1:=strtoint(Date1[9]+Date1[10]);
sal2:=strtoint(Date2[1]+Date2[2]+Date2[3]+Date2[4]);
mah2:=strtoint(Date2[6]+Date2[7]);
rooz2:=strtoint(Date2[9]+Date2[10]);
sal:=(sal2-sal1)*12;
mah:=(mah2-mah1+sal)*30;
rooz:=(rooz2-rooz1+mah);
Edit2.Text:=inttostr(rooz);


دراین روش دریک ادیت می تونیم به راحتی تعدادروزهای بین دوتاریخ رابه دست بیاریم .

hp1361
دوشنبه 25 مرداد 1395, 08:49 صبح
ضمن تشکرمجددازشمادوستان وتشکرویژه ازدوست خوبم، مهندس قره جانلو
ایشون ساده ترین روش رابه بنده پیشنهادکردند.


var sal,mah,rooz,sal1,sal2,mah1,mah2,rooz1,rooz2:integ er; date1,date2:string;
begin
date1:=DBEdit1.Text;
date2:=SolarDatePicker1.Text;
sal1:=strtoint(Date1[1]+Date1[2]+Date1[3]+Date1[4]);
mah1:=strtoint(Date1[6]+Date1[7]);
rooz1:=strtoint(Date1[9]+Date1[10]);
sal2:=strtoint(Date2[1]+Date2[2]+Date2[3]+Date2[4]);
mah2:=strtoint(Date2[6]+Date2[7]);
rooz2:=strtoint(Date2[9]+Date2[10]);
sal:=(sal2-sal1)*12;
mah:=(mah2-mah1+sal)*30;
rooz:=(rooz2-rooz1+mah);
Edit2.Text:=inttostr(rooz);


دراین روش دریک ادیت می تونیم به راحتی تعدادروزهای بین دوتاریخ رابه دست بیاریم .

سلام

آقای خورسندی خودشون اومدن توی تاپیک یادآوری کردن که تابع DaysBetween درون تقویمشون پیاده سازی شده!

یعنی با یک خط کد کار انجام میشه


DiffDay:=SolarDatePicker1.SolarCalendar.DaysBetwee n(DBEdit1.Text, SolarDatePicker1.Text);


اگر هم فقط قصد دارید از این تابع استفاده بشه و کامپوننت تقویم روی فرم وجود نداره، به این روش انجام میشه:


ShowMessage(IntToStr((TPublicUtils.DaysBetween('13 95/01/01','1395/10/10',dkSolar))));


موفق باشیم