PDA

View Full Version : کم کردن دو تاریخ فارسی از هم



nimrokh
چهارشنبه 19 آبان 1389, 11:54 صبح
با سلام من می خوام تو برنامم تو تا تاریخ رو از هم کم کنه و مقدار اونارو به ماه و روز بگه
اگه امکان داره لطفا دوستان کمک کنن من تازه برنامه نویسی می کنم و کم بلدم
تو تاپیک های قبلی چند تا پیدا کردم که باهم مقایسه می کنه ولی من می خوام از هم کم کنه و اونو برگردونه
باتشکر فراوان:قلب:
مثال:
از تاریخ:01/01/89 تا تاریخ 01/02/90 یک سال و دو ماه و 0 روز می شه که اونو به صورت ماه و روز بگه:لبخند:

ali_najari
چهارشنبه 19 آبان 1389, 12:54 عصر
با سلام من می خوام تو برنامم تو تا تاریخ رو از هم کم کنه و مقدار اونارو به ماه و روز بگه
اگه امکان داره لطفا دوستان کمک کنن من تازه برنامه نویسی می کنم و کم بلدم
تو تاپیک های قبلی چند تا پیدا کردم که باهم مقایسه می کنه ولی من می خوام از هم کم کنه و اونو برگردونه
باتشکر فراوان:قلب:
مثال:
از تاریخ:01/01/89 تا تاریخ 01/02/90 یک سال و دو ماه و 0 روز می شه که اونو به صورت ماه و روز بگه:لبخند:

دوست عزيز به وبلاگ من سر بزنيد!

درضمن اين موضوع قبلا بحث شده يه سرچ بزنيد پيدا خواهيد كرد (توي پست هايي كه من گذاشتم يه سرچ بزنيد)

ali_najari
چهارشنبه 19 آبان 1389, 13:09 عصر
اين هم نمونه پست ها:

البته اين پستهايي كه واستون ميدم رو ببينيد ولي ناقص هست اما بهتون قول ميدم كه تا جمعه شب تا جايي كه امكان داره كاملش كنم واسه دقت محاسبه



Enum Operation
year = 0
Mounth = 1
Day = 2
End Enum
Private Function ShamsiDateDiff(ByVal Date1 As String, ByVal Date2 As String, Optional ByVal Seperator As String = "/") AsInteger
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
Public Function GetDateNumber(ByVal StartDate As String, ByVal FinishDate As String, Optional ByVal Seperator As String = "/", Optional ByVal Operation As Operation = Operation.year)
GetDateNumber = 0
Dim OldDay As Integer = ShamsiDateDiff(StartDate, FinishDate, Seperator)
Dim Sal, Mah, Roz As Integer
Sal = (OldDay - (OldDay Mod 365)) / 365
Dim S As Integer = (OldDay - (Sal * 365))
Mah = (S - (S Mod 30)) / 30
Roz = OldDay - ((Sal * 365) + (Mah * 30))
Select Case Operation
Case Operation.year
GetDateNumber = Sal
Case Operation.Day
GetDateNumber = Roz
Case Operation.Mounth
GetDateNumber = Mah
End Select
Return GetDateNumber
End Function


http://www.barnamenevis.org/forum/showthread.php?t=251677