PDA

View Full Version : سوال: بدست آوردن تعداد روز بین دو تاریخ شمسی stimulsoft



xboycooper
دوشنبه 24 شهریور 1393, 16:26 عصر
سلام دوستان
من میخوام تعداد روز های بین دو تاریخ شمسی رو محاسبه کنم
دو تا فیلد تاریخ دارم یکی تاریخ شروع و یکی پایان میخوام ببینم بین این دو تاریخ چند روز بوده
مثلا 1393/6/22 و 1393/6/30 که 8 روز اختلاف بینشونه و من این عدد 8 رو میخوام بهم بده
تاریخ هم بصورت String در دیتابیس ذخیره شده و با فرمت date در stimulsoft نشون داده میشه
ولی وقتی از تابع DateDiff استفاده میکنم پیغام خطای زیر رو میده


cannot convert from 'string' to 'System.DateTime'


اگر روش دیگه ای برای اینکار وجود داره من رو راهنمایی کنید
متشکرم

fakhravari
دوشنبه 24 شهریور 1393, 17:46 عصر
SELECT DATEDIFF(day,'2008-08-05','2008-06-05') AS DiffDate
به صورت en ذخیره کردید؟
DATEDIFF روی فارسی که کار نمی کند

xboycooper
دوشنبه 24 شهریور 1393, 18:32 عصر
SELECT DATEDIFF(day,'2008-08-05','2008-06-05') AS DiffDate
به صورت en ذخیره کردید؟

متشکرم از پاسخ ولی میخوام با ویرایشگر خود stimulsoft اینکارو انجام بدم
تابع هم به شکل زیر هستش


{DateDiff(DT1.EndDate ,DT1.StartDate)}


بنده هم در فرم گزارش توی هر سطر 2 تا تاریخ شمسی دارم که باید اختلاف بین اونها جلوشون نوشته شه
به این شکل
1393/6/22 1393/6/30 8
1393/6/21 1393/6/25 4
1393/6/20 1393/6/22 2
به همین دلیل یه باکس گذاشتم و توش کد بالا رو قرار دادم ولی به هیچ وجه جواب نمیده حتی با تاریخ های میلادی
حتما یه جای کار اشتباه میکنم

----------------------
خب شما چه روشی پیشنهاد میکنید اگه این تابع با تاریخ شمسی کار نمیکنه ؟!

fakhravari
دوشنبه 24 شهریور 1393, 19:04 عصر
از این استفاده کن
{(""+(DateDiff(B_Topics.Date2,B_Topics.Date))).Replace (".00:00:00","")}

fakhravari
دوشنبه 24 شهریور 1393, 19:15 عصر
برای شمسی به میلادی یه تابع کمی میخواهید

xboycooper
دوشنبه 24 شهریور 1393, 20:08 عصر
واقعاً متشکزم دوست عزیز راه حل شما کاملا درسته . تست کردم و جواب داد :چشمک:
در همین فاصله یه راه دیگه هم به ذهنم رسید که با تابع زیر


Public Function ShamsiDateDiff(ByVal Date1 As String, ByVal Date2 As String, Optional ByVal Seperator As String = "/") As Integer
Dim pc As New Globalization.PersianCalendar
Dim da1 = Date1.Split(Seperator)
Dim da2 = Date2.Split(Seperator)
Dim dt1 = pc.ToDateTime(da1(0), da1(1), da1(2), 0, 0, 0, 0)
Dim dt2 = pc.ToDateTime(da2(0), da2(1), da2(2), 0, 0, 0, 0)
Return DateDiff(DateInterval.Day, dt1, dt2)
End Function


اختلاف بین تاریخ های فارسی رو بدست آوردم و به دیتاگرید یک ستون اضافه کردم و در نهایت دیتاگرید رو برای ریپورت فرستادم .