ooje_asman
کاربر تازه وارد
- تاریخ عضویت
- 13 مارس 2005
- نوشتهها
- 85
- لایکها
- 0
باسلام رفقا تابعی دارن که بتونه میلادی رو به قمری تبدیل کنه مرسی
آقا فرود، خدا وكيلي خودت يه بار تيتر تاپيك و متن اصلي تاپيك و پاسخ مرا بخوان، اون وقت يه بار ديگه هم متن خودتو بخون، خيلي دو پهلو است. مثلا گفتي:به نقل از littlerabbit :مشکلی نباید باشه. خود وی بی دات نت تبدیل میکنه Code Advisor برای وی بی هم توضیح میده که چیرو باید اصلاح کنی.
شما همینو بذار هر کی وقت کرد تبدیل میکنه و همینجا میذاره (امیدوارم!!)
خداييش معلومه اين جواب منه يا جواب اصل تاپيك (خود وي بي دات نت، كد مرا به دات نت تبديل مي كنه يا ميلادي را به قمري؟مشکلی نباید باشه. خود وی بی دات نت تبدیل میکنه
تنها چيزي كه ازش ميشد حدس زد كه منظورتون منم (تازه اگه حواست پرت نشده و اشتباهي ننوشتي ) اين جمله بود. (دفعه بعد اينم ننويس تا ديگه اگه تو يه تاپيك 50 نفر هم پست داشتند، فكر كنند مخاطبشان اونايند )شما همینو بذار
Const IslamicEpoch = 227014
Public Sub Gregorian2GhamariHijri(ByVal GDay As Integer, ByVal GMonth As Integer, ByVal GYear As Integer, ByRef GHDay As Integer, ByRef GHMonth As Integer, ByRef GHYear As Integer)
Call Absolute2Islamic(Gregorian2Absolute(GDay, GMonth, GYear), GHDay, GHMonth, GHYear)
End Sub
Private Function lastDayOfGregorianMonth(GMonth As Integer, GYear As Integer) As Integer
' Compute the last date of the month for the Gregorian calendar.
If (GMonth = 2) Then
If (GYear Mod 4 = 0 And GYear Mod 100 <> 0) Or (GYear Mod 400 = 0) Then
lastDayOfGregorianMonth = 29
Exit Function
End If
End If
Select Case GMonth
Case 1
lastDayOfGregorianMonth = 31
Case 2
lastDayOfGregorianMonth = 28
Case 3
lastDayOfGregorianMonth = 31
Case 4
lastDayOfGregorianMonth = 30
Case 5
lastDayOfGregorianMonth = 31
Case 6
lastDayOfGregorianMonth = 30
Case 7
lastDayOfGregorianMonth = 31
Case 8
lastDayOfGregorianMonth = 31
Case 9
lastDayOfGregorianMonth = 30
Case 10
lastDayOfGregorianMonth = 31
Case 11
lastDayOfGregorianMonth = 30
Case 12
lastDayOfGregorianMonth = 31
End Select
End Function
Private Function Gregorian2Absolute(GDay As Integer, GMonth As Integer, GYear As Integer) As Currency
' Computes the absolute date from the Gregorian date.
Dim N As Integer
Dim m As Integer
N = GDay ' days this month
For m = GMonth - 1 To 1 Step -1 ' days in prior months this year
N = N + lastDayOfGregorianMonth(m, GYear)
Next
Gregorian2Absolute = Int(N + 365 * (CCur(GYear) - 1) + (CCur(GYear) - 1) / 4 - (CCur(GYear) - 1) / 100 + (CCur(GYear) - 1) / 400)
End Function
Private Sub Absolute2Islamic(Absolute As Currency, GHDay As Integer, GHMonth As Integer, GHYear As Integer)
' Computes the Islamic date from the absolute date.
If (Absolute <= IslamicEpoch) Then
' Date is pre-Islamic
GHMonth = 0
GHDay = 0
GHYear = 0
Else
' Search forward year by year from approximate year
GHYear = Int((Absolute - IslamicEpoch) / 355)
While (Absolute >= Islamic2Absolute(1, 1, GHYear + 1))
GHYear = GHYear + 1
Wend
' Search forward month by month from Muharram
GHMonth = 1
While (Absolute > Islamic2Absolute(lastDayOfIslamicMonth(GHMonth, GHYear), GHMonth, GHYear))
GHMonth = GHMonth + 1
Wend
GHDay = Absolute - Islamic2Absolute(1, GHMonth, GHYear) + 1
End If
End Sub
Private Function Islamic2Absolute(GHDay As Integer, GHMonth As Integer, GHYear As Integer) As Currency
' Computes the absolute date from the Islamic date.
Islamic2Absolute = Int(CCur(GHDay) + 29 * (CCur(GHMonth) - 1) + Int(CCur(GHMonth) / 2) + 354 * (CCur(GHYear) - 1) + (3 + (11 * CCur(GHYear))) / 30 + IslamicEpoch)
End Function
Private Function lastDayOfIslamicMonth(GHMonth As Integer, GHYear As Integer) As Integer
' Last day in month during year on the Islamic calendar.
lastDayOfIslamicMonth = IIf((GHMonth Mod 2 = 1) Or (GHMonth = 12 And IslamicLeapYear(GHYear)), 30, 29)
End Function
Private Function IslamicLeapYear(GHYear As Integer) As Boolean
' True if year is an Islamic leap year
IslamicLeapYear = IIf(((((11 * GHYear) + 14) Mod 30) < 11), True, False)
End Function
به نقل از ooje_asman :باسلام رفقا تابعی دارن که بتونه میلادی رو به قمری تبدیل کنه مرسی
سلام من يه mudul دارم به زبان vb اگه خواستي ميلتو بده برات بفرستم
فرود خان، ميشه بگيد اگه اين كد بدبخت ما را تو يه ماژول بريزيم، ديگه چه فرقي با اين "درستشه" داره. من اون موقع كه لازم داشتم، كدهاي زيادي رو گير آوردم ولي هيچكدوم مثل اين كد جواب نمي داد. البته همه ميدونيم كه قمري بالاخره يه كم و زيادايي ميشه ولي اين كد در مجموع بهترين كد بود.Module فکر میکنم درستشه
حق با شماست. ولي اين كد گاهي بين شمسي و ميلادي (خصوصا تو ويندوزهاي فارسي) قاط مي زنه. اينم كد:
کد:VBA.Calendar = vbCalHijri MsgBox Date
تازه اگه حواست پرت نشده و اشتباهي ننوشتي
چيا نديده بودي ؟؟؟؟؟؟ (بابا همه جمله هات هزار پهلو است. هر كي تو اون تاپيك پست داشته باشه، فكر مي كنه باهاش داري صحبت مي كني)چرا من اینو ندیده بودم؟؟؟؟؟؟
خدا وكيلي ما جرات گير به هيشكيو نداريم چه برسه به شما !!!!!!خدا وکیلی فقط میخواستید به من گیر بدید دیگه!!!!!!!
حالا واسه چي شكه شدي !!!!!!میدونی یه لحظه اینا رو دیدم شکه شدم!!!!
به قول خودت "تو هم شدي شرلوك هلمز" (آقاي ... يادته؟)این خانم هم داره کم کم منو از این بخش وی بی بیرون میکنه!!!!!
1-ممنون از لطفتون. خانم نیلوفر!!!!!! خوبه دیگه؟؟؟به نقل از Niloufar :چيا نديده بودي ؟؟؟؟؟؟ (بابا همه جمله هات هزار پهلو است. هر كي تو اون تاپيك پست داشته باشه، فكر مي كنه باهاش داري صحبت مي كني)
خدا وكيلي ما جرات گير به هيشكيو نداريم چه برسه به شما !!!!!!
حالا واسه چي شكه شدي !!!!!!
به قول خودت "تو هم شدي شرلوك هلمز" (آقاي ... يادته؟)
يا به قول خودت "اين خانم هم اسم داره" (آقاي مدير هم اسم داره، يادته؟)
بعدشم ما كي هستيم كه به خودمون اجازه همچين كارايي رو بديم. شما اينقدر تو دل همه جا داريد كه ما حالا حالاها بايد شما را از پايين تپه نگاه كنيم. ضمنا اگه اينقدر هم خودخواه باشم، به نفعم است كه شما را بيرون نكنم چون اينقدر ايده ها و كدهاي شما براي همه (و من) مفيد است كه از ديد خودخواهي هم بايد شما را نگه دارم (شوخي ميكنما، يه وقت ناراحت نشي... چون ميدونم جنبشو داري (از پستهاي قبلي ات فهميدم)، اينقدر راحت شوخي ميكنم)
به هر حال اميدوارم كدي كه براي اين تاپيك گذاشته بودم به درد صاحب تاپيك (و احتمالا ديگران) خورده باشه (اينو نوشتم كه اين پست يه ذره از شباهت به چت خارچ بشه و قيافه فروم گونه به خودش بگيره )