برگزیده های پرشین تولز

تبدیل تاریخ به قمری در vb.net

ooje_asman

کاربر تازه وارد
تاریخ عضویت
13 مارس 2005
نوشته‌ها
85
لایک‌ها
0
باسلام رفقا تابعی دارن که بتونه میلادی رو به قمری تبدیل کنه مرسی
 

Niloufar

کاربر تازه وارد
تاریخ عضویت
26 فوریه 2005
نوشته‌ها
102
لایک‌ها
0
سلام
اين تبديل... در "VB.Net" يعني چي؟ من خودم يه زمان كه لازم داشتم، بعد از مدتها گشتن، يه كد به زبون Perl گير آوردم (آخه بابا اين چيزها، از چيزهايي نيست كه كلي بشه پيداش كرد كه آدم بخواد حاضر و آماده ترينش رو برداره) و اونو بدون اينكه حتي يك بار هم با Perl كار كرده باشم، به VB تبديل كردم. حالا شما با اينكه VB و VB.Net اينهمه به هم شبيه اند، مي ترسيد كه در بخش VB به صورت عمومي مطرح كنيد؟
به هر حال اگه حال تبديل :) داشتيد، بگيد تا كدشو بذارم.
 

littlerabbit

مدیر بازنشسته
کاربر فعال
تاریخ عضویت
13 جولای 2003
نوشته‌ها
678
لایک‌ها
6
سن
42
محل سکونت
Iran
مشکلی نباید باشه. خود وی بی دات نت تبدیل میکنه Code Advisor برای وی بی هم توضیح میده که چیرو باید اصلاح کنی.
شما همینو بذار هر کی وقت کرد تبدیل میکنه و همینجا میذاره (امیدوارم!!)
 

Niloufar

کاربر تازه وارد
تاریخ عضویت
26 فوریه 2005
نوشته‌ها
102
لایک‌ها
0
سلام
به نقل از littlerabbit :
مشکلی نباید باشه. خود وی بی دات نت تبدیل میکنه Code Advisor برای وی بی هم توضیح میده که چیرو باید اصلاح کنی.
شما همینو بذار هر کی وقت کرد تبدیل میکنه و همینجا میذاره (امیدوارم!!)
آقا فرود، خدا وكيلي خودت يه بار تيتر تاپيك و متن اصلي تاپيك و پاسخ مرا بخوان، اون وقت يه بار ديگه هم متن خودتو بخون، خيلي دو پهلو است. مثلا گفتي:
مشکلی نباید باشه. خود وی بی دات نت تبدیل میکنه
خداييش معلومه اين جواب منه يا جواب اصل تاپيك (خود وي بي دات نت، كد مرا به دات نت تبديل مي كنه يا ميلادي را به قمري؟
شما همینو بذار
تنها چيزي كه ازش ميشد حدس زد كه منظورتون منم (تازه اگه حواست پرت نشده و اشتباهي ننوشتي :) ) اين جمله بود. (دفعه بعد اينم ننويس تا ديگه اگه تو يه تاپيك 50 نفر هم پست داشتند، فكر كنند مخاطبشان اونايند :D )


به هر حال اينم كد:

کد:
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

جهت استفاده از روال Gregorian2GhamariHijri استفاده نماييد.
 

Arash tools

Registered User
تاریخ عضویت
30 آپریل 2005
نوشته‌ها
8
لایک‌ها
0
محل سکونت
Tehran
به نقل از ooje_asman :
باسلام رفقا تابعی دارن که بتونه میلادی رو به قمری تبدیل کنه مرسی

سلام من يه mudul دارم به زبان vb اگه خواستي ميلتو بده برات بفرستم
 

littlerabbit

مدیر بازنشسته
کاربر فعال
تاریخ عضویت
13 جولای 2003
نوشته‌ها
678
لایک‌ها
6
سن
42
محل سکونت
Iran
Module فکر میکنم درستشه.
من که دیگه خجالت میکشم بگم انجا مکانیه که همه سوال و جوابها عمومیه و هی گیر به میل ندید!!! -اصلا به من چه!!!-
 

Piter1356

کاربر تازه وارد
تاریخ عضویت
11 اکتبر 2004
نوشته‌ها
395
لایک‌ها
0
محل سکونت
tehran
فکر می کنم خود ویندوز بصورت آماده تاریخ هجری قمری رو داشته باشه .
فقط با یه فرمان باید تاریخ رو بخونیم .
خود شما همین الان به رجینالی ستینگ ویندوزت یه نگاهی بنداز . می بینی که نوع تاریخ هجری قمری رو داره .
پس فقط میمونه صدا زدنش . فکر می کنم نیازی به نوشتن مجددش نباشه
 

Niloufar

کاربر تازه وارد
تاریخ عضویت
26 فوریه 2005
نوشته‌ها
102
لایک‌ها
0
سلام من يه mudul دارم به زبان vb اگه خواستي ميلتو بده برات بفرستم
Module فکر میکنم درستشه
فرود خان، ميشه بگيد اگه اين كد بدبخت ما را تو يه ماژول بريزيم، ديگه چه فرقي با اين "درستشه" داره. من اون موقع كه لازم داشتم، كدهاي زيادي رو گير آوردم ولي هيچكدوم مثل اين كد جواب نمي داد. البته همه ميدونيم كه قمري بالاخره يه كم و زيادايي ميشه ولي اين كد در مجموع بهترين كد بود.
[/QUOTE]فکر می کنم خود ویندوز بصورت آماده تاریخ هجری قمری رو داشته باشه .
فقط با یه فرمان باید تاریخ رو بخونیم .
خود شما همین الان به رجینالی ستینگ ویندوزت یه نگاهی بنداز . می بینی که نوع تاریخ هجری قمری رو داره .
پس فقط میمونه صدا زدنش . فکر می کنم نیازی به نوشتن مجددش نباشه
حق با شماست. ولي اين كد گاهي بين شمسي و ميلادي (خصوصا تو ويندوزهاي فارسي) قاط مي زنه. اينم كد:
کد:
     VBA.Calendar = vbCalHijri
    MsgBox Date
 

littlerabbit

مدیر بازنشسته
کاربر فعال
تاریخ عضویت
13 جولای 2003
نوشته‌ها
678
لایک‌ها
6
سن
42
محل سکونت
Iran
1- چرا من اینو ندیده بودم؟؟؟؟؟؟
2- من منظورم از اینکه تبدیل میکنه این بود که وی بی دات نت کد وی بی 6 رو به وی بی دات نت تبدیل میکنه (اگه قابل تبدیل باشه ) اون اشاره به برنامه Code Advisor هم واسه همین بود!!!!
3-من منظورم اون دوستی بود که به جای Module نوشته بود Mudul
تازه اگه حواست پرت نشده و اشتباهي ننوشتي

4-حواس من پرت هست اما نه اینقدر!!!!
5- خدا وکیلی فقط میخواستید به من گیر بدید دیگه!!!!!!! میدونی یه لحظه اینا رو دیدم شکه شدم!!!!
6- این خانم هم داره کم کم منو از این بخش وی بی بیرون میکنه!!!!! به هر صورت خیلی خوشحالم که یکی بالاخره اینجا اومد که کمک کنه!!! جز شما این دوستای دیگمون (هم هستن یکی همون آقای آرنولد !!!-اسمش یادم نیست- یکی دوتای دیگه هم بیشتر سر زدن و خیلی ممنون!!!! شما فهمیدید فعل و فاعل جمله آخر من اصلا چی بود؟؟؟؟؟؟
 

Niloufar

کاربر تازه وارد
تاریخ عضویت
26 فوریه 2005
نوشته‌ها
102
لایک‌ها
0
چرا من اینو ندیده بودم؟؟؟؟؟؟
چيا نديده بودي ؟؟؟؟؟؟ (بابا همه جمله هات هزار پهلو است. هر كي تو اون تاپيك پست داشته باشه، فكر مي كنه باهاش داري صحبت مي كني)
خدا وکیلی فقط میخواستید به من گیر بدید دیگه!!!!!!!
خدا وكيلي ما جرات گير به هيشكيو نداريم چه برسه به شما !!!!!!
میدونی یه لحظه اینا رو دیدم شکه شدم!!!!
حالا واسه چي شكه شدي !!!!!!
این خانم هم داره کم کم منو از این بخش وی بی بیرون میکنه!!!!!
به قول خودت "تو هم شدي شرلوك هلمز" (آقاي ... يادته؟)
يا به قول خودت "اين خانم هم اسم داره" (آقاي مدير هم اسم داره، يادته؟)
بعدشم ما كي هستيم كه به خودمون اجازه همچين كارايي رو بديم. شما اينقدر تو دل همه جا داريد كه ما حالا حالاها بايد شما را از پايين تپه نگاه كنيم. ضمنا اگه اينقدر هم خودخواه باشم، به نفعم است كه شما را بيرون نكنم چون اينقدر ايده ها و كدهاي شما براي همه (و من) مفيد است كه از ديد خودخواهي هم بايد شما را نگه دارم :) :) (شوخي ميكنما، يه وقت ناراحت نشي... چون ميدونم جنبشو داري (از پستهاي قبلي ات فهميدم)، اينقدر راحت شوخي ميكنم)


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

littlerabbit

مدیر بازنشسته
کاربر فعال
تاریخ عضویت
13 جولای 2003
نوشته‌ها
678
لایک‌ها
6
سن
42
محل سکونت
Iran
به نقل از Niloufar :
چيا نديده بودي ؟؟؟؟؟؟ (بابا همه جمله هات هزار پهلو است. هر كي تو اون تاپيك پست داشته باشه، فكر مي كنه باهاش داري صحبت مي كني)

خدا وكيلي ما جرات گير به هيشكيو نداريم چه برسه به شما !!!!!!

حالا واسه چي شكه شدي !!!!!!

به قول خودت "تو هم شدي شرلوك هلمز" (آقاي ... يادته؟)
يا به قول خودت "اين خانم هم اسم داره" (آقاي مدير هم اسم داره، يادته؟)
بعدشم ما كي هستيم كه به خودمون اجازه همچين كارايي رو بديم. شما اينقدر تو دل همه جا داريد كه ما حالا حالاها بايد شما را از پايين تپه نگاه كنيم. ضمنا اگه اينقدر هم خودخواه باشم، به نفعم است كه شما را بيرون نكنم چون اينقدر ايده ها و كدهاي شما براي همه (و من) مفيد است كه از ديد خودخواهي هم بايد شما را نگه دارم :) :) (شوخي ميكنما، يه وقت ناراحت نشي... چون ميدونم جنبشو داري (از پستهاي قبلي ات فهميدم)، اينقدر راحت شوخي ميكنم)


به هر حال اميدوارم كدي كه براي اين تاپيك گذاشته بودم به درد صاحب تاپيك (و احتمالا ديگران) خورده باشه (اينو نوشتم كه اين پست يه ذره از شباهت به چت خارچ بشه و قيافه فروم گونه به خودش بگيره :) )
1-ممنون از لطفتون. خانم نیلوفر!!!!!! خوبه دیگه؟؟؟
2-زیادی مته به خشخاش میذارید!!! من که معتقدم اینجا به اندازه کافی آدمای با کلاس داره. (همش داره میشه تعارف
3- این ادیتور با فایر فاکس منو دیوونه کرد )بی ربط به این موضوع بود!! دو ساعته یه کپی کردن ساده وقتمو گرفته!!)
4-یه کپی از این با تغییرات (یعنی با حذف چتیات ) رفت به قسمت مقالات.
 

PersianAmir

کاربر تازه وارد
تاریخ عضویت
1 ژوئن 2005
نوشته‌ها
76
لایک‌ها
1
سلام
يک برنامه نويس ايراني چنين کدي را نوشته.
شرکت مايکروسافت هم کد اين برنامه نويس ايراني را تاييد نموده است و در يکي از صفحات خود کد مورد نظر شما را قرار دهد است تا دانلود نماييد.
فکر مي کنمPCAL هست.
اين کد تبديل ميلادي و هجري شمسي و قمري به همديگه را دارا مي باشد.
موفق باشيد.
 

H_R

مدیر بازنشسته
تاریخ عضویت
30 مارس 2005
نوشته‌ها
3,298
لایک‌ها
17
سن
42
محل سکونت
North Pole
تبدیل تاریخ میلادی به قمری و کلیه تاریخ های جهان توسط خود دات نت فریم ورک 1 انجام میشه از جمله :جولايي(رومی)، عبری، ژاپنی، کره‌ای، تايوانی، هجري-قمری و حتّی تقويم بودايي(تايلندی) . (البته خوشبختانه مارو حساب نکرده بودن و تاریخ ما رو ساپرت نمیکردن ) که همونطور که داستانش رو میدونید http://iranasp.net/Articles/ShowArticle.aspx?articleid=52 برنامه نوشته شد و به میکروسافت فرستاده شد ایرانی هم رفتند هی رای دادن تا بالاخره توی دات نت 2 ما هم ساپرت شدیم و تقویم ما هم به تقویم های دیگه پیوست !!!
توی دات نت 1 برای تبدیل تقویم ها به هم از http://www.shahabfar.com/articles/article.aspx?article=14 استفاده کنید
 
بالا