PDA

View Full Version : اختلاف دو تاریخ شمسی



alirezamirzahasan
یک شنبه 15 مهر 1386, 13:25 عصر
من دنبال ماژولی میگردم که دو تا تاریخ شمسی را بگیره و اختلاف آنها رو به integer برگردونه

mostafa-sohrablou
شنبه 28 مهر 1386, 19:03 عصر
برای اینکار هر دو تاریخ شمسی را به میلادی تبدیل کن و سپس تاریخ های میلادی را از هم کم کن. به این صورت اختلاف آن دو را پیدا می کنی. با استفاده از ماژول زیر :

Public Function s2m(fd As String) As Date
Dim syy As Integer
Dim smm As Integer
Dim sdd As Integer
Dim val As Long
Dim By As Integer
Dim i As Integer
init
fd = Mid(m3s(date), 1, 2) & Mid(fd, 1, 2) & "/" & Mid(fd, 3, 2) & "/" & Mid(fd, 5, 2)
If Not fdvalid(fd) Then
s2m = Format(date, "yyyy/mm/dd")
Exit Function
End If
syy = fdyear(fd)
smm = fdmon(fd)
sdd = fdday(fd)
By = year(sstart)
val = 0
While By < syy
If issleap(By) Then
val = val + 1
End If
val = val + 365
By = By + 1
Wend
For i = 1 To smm - 1
val = val + smonths(i)
Next
val = val + sdd
s2m = Format(mstart + val - 1, "yyyy/mm/dd")
End Function

hrj1981
شنبه 28 مهر 1386, 19:08 عصر
علیرضاجان سلام
شمامی توانیدازdllزیراستفاده کنیدکه ماحصل تلاش بچه های اکسین رایانه می باشد.
ضمنا اگر کمی در تالارجستجوکنی مطالب خیلی مفیدی پیدامی کنی

ali_habibi1384
یک شنبه 29 مهر 1386, 19:29 عصر
عزیز دل برادر اینکه کاری نداره می تونی از این روش حساب کنی که مثلا تاریخ 1386/1/12 رو میخوای از 1386/02/10 کم کنی نگاه کن :


x=1386*365+1*31+12
y=1386*365+2*31+10
z=abs(x-y)

منظورمو که فهمیدی؛ یکم تغییراتش بدی به نتیجه می رسی

__siavash__
یک شنبه 29 مهر 1386, 20:37 عصر
عزیز دل برادر اینکه کاری نداره می تونی از این روش حساب کنی که مثلا تاریخ 1386/1/12 رو میخوای از 1386/02/10 کم کنی نگاه کن :


x=1386*365+1*31+12
y=1386*365+2*31+10
z=abs(x-y)

منظورمو که فهمیدی؛ یکم تغییراتش بدی به نتیجه می رسی
برای این کار باید اینو در نظر گرفت بعضی ماه ها 30 روزه هستند بعضی هم 31 روزه و یکی هم 29 روزه در ضمن سالهای کبیسه رو هم باید در نظر گرفت البته میشه این کارو کرد اما باید یه ماژول دقیق براش درست کرد
خوب انگار ShamsiDLL این اختلاف رو حساب نمیکنه
چرا شما این کارو نمیکنی که این تاریخ ها رو به میلادی تبدیل کنی بعد با Datediff اختلافشونو بدست بیاری ؟