PDA

View Full Version : سوال: وجود باگ در Shamsi.dll



mohammadreza_1382
دوشنبه 30 فروردین 1389, 21:46 عصر
سلام
فوری میرم سر اصل مطلب

اگه در shamsi.dll از تاریخ 1389/01/30 به کمک تابعی که داره 30 روز کم کنیم تاریخ 1389/12/29 رو نشون میده یعنی بجای 1388 سال 1389 رو نشون میده
می تونید بگید مشکل کجاست؟





Dim shm As New ShamsiDLL.ClassShamsi
shm.ShamsiDecrease(1389/01/30, 30)

Mani_rf
سه شنبه 31 فروردین 1389, 09:42 صبح
راستش را بخوای من تا حالا با این Dll که شما کار می کنید کار نکردم ، اگر اگر جای شما بودم از امکان تقویم شمسی خود .Net Framework استفاده می کردم ، فکر می کنم این قدر قوی باشه که حتی شما را از این که به یک رقیب برای اون فکر کنید بی نیاز کنه . به شما پیشنهاد می کنم که از Persian Calender خود .Net Framework استفاده نمایید.
اتفاقا چند و قت پیش در همین انجمن درباره این این تقویم و امکاناتش صحبت میشد این قضیه اثبات شده که در تقویم شمسی بعضی از سالهای کبیسه به جای 4 سال بعد از 5 سال رخ میدهند (یکی از دوستان با علم بالای خودش در این زمینه این را اثبات کرد)؛ تا اون موقع من هم فکر میکردم که سال کبیسه دقیقا هر 4 سال یک بار است. این تقویم حتی اون شرایط که سال کبیسه بعد از 5 سال رخ میدهد را نیز محاسبه میکند...
با کمی جستجو میتوانید این مطلب را بیابید...

sahele_sheni
دوشنبه 18 مرداد 1389, 17:21 عصر
سلام . خیلی‌ گشتم ولی‌ نتیجه نداد . چطور می‌شه با استفاده از persiancalendar خود .net اختلاف ۲ تاریخ رو بدست آورد ؟

ricky22
دوشنبه 18 مرداد 1389, 17:58 عصر
اختلاف 2 تاریخ
http://msdn.microsoft.com/en-us/library/b5xbyt6f%28VS.80%29.aspx
Datediff

mhmoein
دوشنبه 18 مرداد 1389, 20:31 عصر
با سلام خدمت دوستان محترم
بنده با توجه به همون تقویم خود.Net مایکروسافت اختلاف 2 تا تاریخ رو به صورت روز در آوردم. حالا می خوام این روزهای به دست اومده رو تبدیل کنم جوری که مثلا برای محاسبه سن افراد به صورت دقیق ازش استفاده کنم . آیا راهی هست که بشه به صورت دقیق این کار رو رو صورت داد یعنی نمی خوام این روزها را تقسم به 365 کنم بعد مانده اون رو به ماه و دوباره به روز بنویسم . می خوام خیلی دقیق سن فرد رو بر اساس سال و ماه و روز به دست بیارم. خیلی دنبال این موضوع گشتم و لی متاسفانه به حال جوابی به دست نیاوردم. ممنون می شم راهنمایی کنید.

sahele_sheni
سه شنبه 19 مرداد 1389, 09:55 صبح
اختلاف 2 تاریخ
http://msdn.microsoft.com/en-us/library/b5xbyt6f%28VS.80%29.aspx
Datediff

ممنون دوست عزیز . چیزی که مد نظرم بود اینه که این اختلافی که بدست میاد به روز هست و تبدیل این اختلاف به سال و ماه و روز رو نتونستم انجام بدم . منظور از سوالم این بود که این اختلاف رو به سال ماه روز تحویل بده . برای این مشکل راه حلی وجود داره ؟؟

mhmoein
پنج شنبه 21 مرداد 1389, 13:06 عصر
دوستان کسی راه حلی برای این موضوع ندارن ؟

sahele_sheni
جمعه 22 مرداد 1389, 11:20 صبح
سلام . dll های farsilibrary رو به پروژه add کن .
این خط رو به اول برنامه اضافه کن


Imports FarsiLibrary.Utils

حالا با این چند خط شما اختلاف دو تاریخ رو بدست میارید .


Dim ejrahokmtarikh() As String = Split(tarikh_ejra.Text, "/")
Dim estekhdamtarikh() As String = Split(tarikh_estekhdam.Text, "/")
For counter = 0 To 2
If ejrahokmtarikh(counter) = "" Or ejrahokmtarikh(counter) = " " Or ejrahokmtarikh(counter) = "__" Then
ejrahokmtarikh(counter) = "0"
End If
Next
For counter = 0 To 2
If estekhdamtarikh(counter) = "" Or estekhdamtarikh(counter) = " " Or estekhdamtarikh(counter) = "__" Then
estekhdamtarikh(counter) = "0"
End If
Next
Dim ejratemp As String = ejrahokmtarikh(0) + "/" + ejrahokmtarikh(1) + "/" + ejrahokmtarikh(2)
Dim estekhdamtemp As String = estekhdamtarikh(0) + "/" + estekhdamtarikh(1) + "/" + estekhdamtarikh(2)
Dim ejra As Date = toEnglish.Convert(ejratemp)
Dim estekhdam As Date = toEnglish.Convert(estekhdamtemp)
Dim diff As String = DateDiff(DateInterval.Day, estekhdam, ejra)
If (CInt(diff) < 0) Then
MsgBox("اطلاعات سوابق را درست وارد نکرده اید")
Exit Sub
End If
If CInt(diff) >= 365 Then
sal = CStr(Math.Truncate((diff) / 365))
Dim tempmah As String = CStr((CInt(diff)) Mod 365)
mah = CStr(CInt(tempmah) / 31)
rooz = CStr(CInt(tempmah) Mod 31)
ElseIf CInt(diff) > 31 Then
sal = "0"
Dim tempmah As String = CStr((CInt(diff)) Mod 365)
mah = CStr(CInt(tempmah) / 31)
rooz = CStr(CInt(tempmah) Mod 31)
Else
sal = "0"
mah = "0"
rooz = diff
End If

موفق باشید

kebriya
شنبه 23 مرداد 1389, 15:31 عصر
اختلاف 2 تاریخ
http://msdn.microsoft.com/en-us/library/b5xbyt6f%28VS.80%29.aspx
Datediff

وقتی از این تابع استفاده میکنم به تاریخ مثلا 31/2 گیر میده که فرمت تاریخ نیست فکر کنم بخاطر اینه که ماه دوم میلادی 29 روزه است با اینکه از persian Calender استفاده کردم. کسی میتونه کمکم کنه؟

sahele_sheni
یک شنبه 24 مرداد 1389, 21:43 عصر
وقتی از این تابع استفاده میکنم به تاریخ مثلا 31/2 گیر میده که فرمت تاریخ نیست فکر کنم بخاطر اینه که ماه دوم میلادی 29 روزه است با اینکه از persian Calender استفاده کردم. کسی میتونه کمکم کنه؟

دوست عزیز از این فرمت 1389/02/31 استفاده کن مشکلی نداره