PDA

View Full Version : باز هم اختلاف میان دو تاریخ شمسی!



alih988
شنبه 20 بهمن 1386, 21:23 عصر
به نام خدا
سلام خدمت شما.
لطفا یک راه حل ارائه کنید برای اینکه بشه اختلاف میان دو تاریخ شمسی را بدست آورید !
در سایت گشتم ولی یک چیز حسابی جز فایل shamsi.dll پیدا نکردم ، که اون هم بلد نیستم توی vb.net 2005 ازش استفاده کنم!
لطفا راهنمایی کنید!

رضا عربلو
شنبه 20 بهمن 1386, 22:05 عصر
تاریخ ها را به میلادی تبدیل کن و از هم کم کن.
برای مثال کد زیر تاریخ را به میلادی تبدیل می کند.


System.Globalization.PersianCalendar pc = new System.Globalization.PersianCalendar();
System.DateTime dt = pc.ToDateTime(1386, 11, 17, 0, 0, 0, 0);

کم کردنش هم کاری ندارد.

alih988
شنبه 20 بهمن 1386, 22:14 عصر
آقا رضا با تبدیل تاریخ میلادی با شمسی با تابع فوق مشکلی ندارم ، فقط می خواهم اختلاف بین دو تاریخ را بر حسب روز بدست بیاورم

ghafoori
یک شنبه 21 بهمن 1386, 09:16 صبح
دوست عزیز کافی است دو تاریخ را از هم کم کنید و داخل منغییری از نوع timespan قرار دهید به این صورت


Dim timespan As New TimeSpan
Dim d, d1 As DateTime
timespan = d - d1

alih988
یک شنبه 21 بهمن 1386, 10:39 صبح
آقا من هرچه امتحان کردن نشد ، اولا که دستور آقا رضا اجرا نشد ، تابع todatetime تاریخ شمسی را به میلادی تبدیل می کند ، من نیاز دارم تاریخ را به فرمت datetime و از نوع شمسی داشته باشم تا بتوانم از تاریخ دیگری کم کنم .
من می توانم تاریخ شمسی را با نوع استرینگ بدست بیاورم ، ولی استرینگ را که نمی شود ظاهرا به datetime تبدیل کرد !

raravaice
یک شنبه 21 بهمن 1386, 11:01 صبح
سلام

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

ghafoori
یک شنبه 21 بهمن 1386, 15:44 عصر
دوست عزیز ببین این کد کارتان را راه می اندازد

Dim d As New Date(1386, 10, 15)
Dim d1 As New Date(1386, 8, 10)
Dim ts As New TimeSpan
ts = d - d1
MsgBox(ts.Days.ToString)

alih988
یک شنبه 21 بهمن 1386, 17:11 عصر
خدا خیرتان بدهد ، مشکلم حل شد ، من فکر می کردم حتما باید دو تاریخ شمسی را از هم کم کنم تا به نتیجه برسم !

saeghe3000
یک شنبه 21 بهمن 1386, 23:42 عصر
یه سوال دارم از آقای غفوری
به نظر شما اینکه Date بر اساس تاریخ میلادی کار میکنه
و اینکه تعداد روزها در بعضی ماههای شمسی با ماههای میلادی مطابق نیست ( مثلا ماه دوم شمسی 31 روز و ماه دوم میلادی 29 روز هست )

این کد شما ایجاد مشکل نمی کنه

من توجه شمارو به تابع IsDate جلب می کنم که اگه تاریخ مثلا 1386/02/31 رو بهش بدین ، تا اونجایی که یادمه مقدار False بر میگردوند
من فکر کنم بعضی وقت ها درست عمل نکنه . بازم نمی دونم . فکر می کنم باید حالت های زیادی رو باهاش تست کرد

amirsajjadi
دوشنبه 22 بهمن 1386, 08:20 صبح
با سلام
وی بی دات نت فقط با تاریخ میلادی کار میکنه
شما میتونید ابتدا تاریخ رو به میلادی تبدیل کنید سپس با استفاده از DateDiff تاریخ ها رو از هم کم کنید

saman_itc
دوشنبه 22 بهمن 1386, 10:51 صبح
راه کار های آقای amirsajjadi (http://barnamenevis.org/forum/member.php?u=28521) حرف نداره

saman_itc
دوشنبه 22 بهمن 1386, 23:40 عصر
دوستان به این تاپیک یه سر بزنید
با استفاده از ماژول میتونید بدون تبدیل به میلادی و با فرمت string کارتون راه بندازین
http://barnamenevis.org/forum/showthread.php?t=94395