سلام
چرا از همون DLLی که تو تاپیک دیگه ضمیمه کردم، استفاده نمیکنید. اون خیلی عالیه. و تمام توابع کار با تاریخها رو که VB داره، برای تاریخ شمسی، باز نویسی کرده (مثلاً تابع ShamsiDiff برای به دست اوردن اختلاف دو تاریخ شمسی). اگه قصد شما نوشتن یه برنامه کاربرد (حتی پروژههای دانشگاهی) هست، استفاده از اون DLL قطعاً بهتر (و البته حرفهای تر) از کد نویسی هست.
سالها پیش تو یه نرم افزار که با پاسکال نوشته بودم از کد زیر برای به دست اوردن شمارهی روز هفته، در تاریخ دلخواه شمسی، استفاده کردم. یادم نیست که چجوری به این کد رو نوشتم، فقط میدونم ابتکار خودمه (متأسفانه اون موقعها اینترنت خیلی رونق نداشت) و از سال 79 تا حالا داره تو همون برنامه کاملاً درست کار میکنه.
من اون رو برای شما به VB تبدیل کردم. فقط خواهش میکنم، توضیح نخواهید، چون واقعاً یادم نیست که چه جوری به این کد رسیدم، ولی یادم هست که خیلی روش کار کردم و با آزمایش و خطا کد صحیح رو پیدا کردم.
Function DayOfWeek(Year As Integer, Month As Integer, Day As Integer) As Integer
Dim yr As Integer, century As Integer
Select Case Month
Case 1, 11, 12: Month = Month + 3
Case 2, 3, 10: Month = Month + 6
Case 4, 5, 6, 8, 9: Month = Month + 1
Case 7: Month = Month + 4
End Select
century = Year \ 100
yr = Year Mod 100
DayOfWeek = (((26 * Month - 2) \ 10) + Day + yr + (yr \ 4) + (century \ 4) - (2 * century)) Mod 7
End Function
این تابع یه عدد بین 0 تا 6 برای شنبه تا جمعه بر میگردونه. برای فراخونی اون، باید سال، ماه و روز تاریخ شمسی رو به عنوان پارامتر به اون وارد کنید و عدد به دست اومده رو استفاده کیند.
راستی؛ خطاب به مدیران سایت: چند روز هست کدهای نوشته شده تو پستهای ارسال شده برای من درست نمایش داده نمیشه و تمام کدها تو یه خط خیلی طولانی و پست سر هم دیده میشه. من از IE 8 استفاده میکنم و به همین خاطر مجبور شدم Fire Fox نصب کنم. البته تو فایر فاکس هم چیز درسته. تو چندتا دستگاه دیگه هم تست کردم همین مشکل رو داره. لطفاً برای رفع این اشکال بنده رو راهنمایی کنید.