PDA

View Full Version : تشخیص ایام هفته از روی تاریخ



aleas2
چهارشنبه 14 اردیبهشت 1390, 16:58 عصر
سلام خسته نباشید کسی میدونه تو vb6 از رو تاریخ میلادی وشمسی هرکدوم چجوری میشه مثلا تاریخ میلادی بهت میدن بگی چند شنبه هسته؟یا تاریخ شمسی میدن بگی چند شنبه هسته؟

milad-fa
چهارشنبه 14 اردیبهشت 1390, 18:48 عصر
با سلام،
برای تاریخ میلادی خود vb یک دستور به اسم weekday داره که خروجی بصورت int یا عدد هست.
که اعداد بین 1 تا 7 هستش.
1 یعنی یکشنبه
2 یعنی دوشنبه
.
.
.
7 یعنی شنبه
که با یک select case راحت میتونی روز رو بدست بیاری.
برای تاریخ شمسی هم یک سری ماژول های آماده هستش که میتونی استفاده کنی یا میتونی تاریخ شمسی رو به میلادی تبدیل کنی بعد روز رو به دست بیاری.

M_Maskout
چهارشنبه 14 اردیبهشت 1390, 23:47 عصر
سلام
چرا از همون 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 نصب کنم. البته تو فایر فاکس هم چیز درسته. تو چندتا دستگاه دیگه هم تست کردم همین مشکل رو داره. لطفاً برای رفع این اشکال بنده رو راهنمایی کنید.

aleas2
پنج شنبه 15 اردیبهشت 1390, 09:45 صبح
سلام
چرا از همون DLLی که تو تاپیک دیگه ضمیمه کردم، استفاده نمی‌کنید. اون خیلی عالیه. و تمام توابع کار با تاریخ‌ها رو که VB داره، برای تاریخ شمسی، باز نویسی کرده (مثلاً تابع ShamsiDiff برای به دست اوردن اختلاف دو تاریخ شمسی). اگه قصد شما نوشتن یه برنامه کاربرد (حتی پروژه‌های دانشگاهی) هست، استفاده از اون DLL قطعاً بهتر (و البته حرفه‌ای تر) از کد نویسی هست.[/B]
سلام اون که کار نکرد نمیشه به vb6 معرفیش کرد خطا مید اینم عکس خطا
69557

-------------
ضمنا" یه سوال داشته میشه مثلا ساعت تاریخ امروز رو به برنامه بگی و بگی ده سال و دورزو و ساعت دگه ساعت چنده؟ااگر شدنی بگو یه تاپیک دگه بزنم اگر شدنی نیست نزنم

M_Maskout
پنج شنبه 15 اردیبهشت 1390, 15:15 عصر
سلام اون که کار نکرد نمیشه به vb6 معرفیش کرد خطا مید اینم عکس خطا
69557

سلام
برای استفاده از هر فایل DLL یا OCX تو ویندوز، باید اون فایل رو تو ویندوز ثبت (Register) کنید. اون وقت می‌تونید از کلاس(های) اون DLL یا OCX استفاده کنید.
برای ثبت اینجور فایل‌ها، از برنامه RegSVR32.Exe که تو مسیر Windows\System32 هست باید استفاده کنید. برای اینکار، دستور زیر رو تو پنجره‌ی Run اجرا کنید:


REGSVR32 DLL مسیرکامل و نام فایل

بعد اچرای دستور بالا، تو VB از منوی Project، آیتم References...‎ رو اجرا کنید و تو لیست نمایش داده شده، دنبال عبارت OxinSoft Hijri Shamsi calender functions بگردید. و اون رو تیک بزنید و پنجره رو با Ok ببندید.
ما بقی کار (استفاده از توابع تاریخ شمسی) رو هم توی فایل Help همراه ضمیمه پیدا می‌کنید.


ضمنا" یه سوال داشته [داشتم] میشه مثلا ساعت تاریخ امروز رو به برنامه بگی و بگی ده سال و دورزو و [یه] ساعت دگه [دیگه] ساعت چنده؟ااگر شدنی بگو یه تاپیک دگه بزنم اگر شدنی نیست نزنم
بطور قطع شدنی هست!
همونطور که خودتون اشاره کردید، بهتره برای این سؤال، یه تاپیک جدید ایجاد کنید.

ramzdar
شنبه 17 اردیبهشت 1390, 12:49 عصر
سلام
میتونی از این سورس استفاده کنی.
توش یه روش جدید ارائه کردم.
البته فقط مخصوص سال 90 هست.