سلام
من میخوام تاریخ شمسی رو از ورودی بگیره و روز هفته اون تاریخ رو برگردونه!
خواهش میکنم کمکم کنید خیلی حیاتیه!!!!!:sad::sad:
Printable View
سلام
من میخوام تاریخ شمسی رو از ورودی بگیره و روز هفته اون تاریخ رو برگردونه!
خواهش میکنم کمکم کنید خیلی حیاتیه!!!!!:sad::sad:
نقل قول:
این چیزی که شما میخواین کار زیادی نداره. اما واسه اینکه هم به شما کمک کرده باشم هم قوانین رو رعایت کرده باشم هم ترغیبت کنم خودت سعی کنی این کد رو نوشتم که به چیزی که میخوای نزدیکه
در ضمن شما باید اول تاریخ شمسی رو به سیستم بشناسونی. ویژوال بیسیک که نمیدونه شمسی چیه!!
یک Label و یک Timer تو فرم ایجاد کن
Enabeld تامیر رو True بزار و Interval شو برابر با 500 قرار بده
روی تایمر دابل کلیک کن و اینا رو بنویس:::
[PHP]Month_days = Array(0, 31, 59, 90, 120, 151, 181, 212, 242, 272, 303, 333)
my_week_days = Array("shanbe", "yek", "Do", "3shanbe", "4shanbe", "5shanbe", "jome")
Months_name = Array("farvardin", "ordi", "khor", "Tir", "Mordad", "shahrivar", "mehr", "Aban", "azar", "dey", "bahman", "esfand")
mdtn = Day(Now) + Month_days(Month(Now))
my_week_day = my_week_days(Weekday(Now))
If mdtn > 79 Then
my_1 = mdtn - 79
If my_1 <= 186 Then
If (my_1 Mod 31) = 0 Then
shamsi_day = 31
shamsi_month = Int(my_1 / 31)
Else
shamsi_day = (my_1 Mod 31)
shamsi_month = Int(my_1 / 31) + 1
End If
Else
my_1 = (my_1 - 186)
If (my_1 Mod 30) = 0 Then
shamsi_day = 30
shamsi_month = Int(my_1 / 30) + 6
Else
shamsi_day = (my_1 Mod 30)
shamsi_month = Int(my_1 / 30) + 7
End If
End If
shamsi_year = Year(Now) - 621
Else
If ((Year(Now) Mod 100) = 0 And (Year(Now) Mod 400) = 0) Or ((Year(Now) Mod 100) <> 0 And (Year(Now) Mod 4) = 0) Then
my_day_diff = 11
Else
my_day_diff = 10
End If
my_1 = (mdtn + my_day_diff) / 30
If (my_1 Mod 30) = 0 Then
shamsi_day = 30
shamsi_month = Int(my_1 / 30) + 9
Else
shamsi_day = (my_1 Mod 30) + 14
shamsi_month = Int(my_1 / 30) + 10
End If
shamsi_year = Year(Now) - 622
End If
my_shamsi_month = Months_name(shamsi_month)
Persian_Date_String = "Emrooz " & my_week_day & "===" & shamsi_day + 3 & " " & my_shamsi_month & " " & shamsi_year
Label1.Caption = Persian_Date_String
End Sub
[/PHP]
ممکنه بعضی روزا روز shamsi_day اشتباه بزنه که میتونی اعداد جمع شده رو تغییر بدی
موفق باشی
ممنون بابت برنامه ای که نوشتید ولی فکر میکنم اون چیزی که من میخوام در واقع تبدیل شمسی به میلادیه( چون از ورودی تاریخ شمسی رو میخونه و روز هفته اش رو برمیگردونه)ولی این برنامه تاریخ میلادی سیستم رو داره به شمسی تبدیل میکنه!
اگر دارم اشتباه میکنم بهم بگید چون دیگه اصلا نمیفهمم چی درسته چی غلط!
عزیزم تاریخ باید به شمسی باشه که تبدیلش کنی به میلادی
ویژوال بیسیک که تاریخ شمسی نمیدونه چیه.
اصلا تاریخ خودش میلادی هست دیگه باز می خای تبدیلش کنی به میلادی؟؟؟!! نمیشه که.
البته برای راحتی کارت می تونی از اکتویکس Shamsi.dllاستفاده کنی
شما در واقع يه برنامه اي ميخواييد كه تاريخ شمسي رو به ميلادي و بلعكس تبديل كنه ؟
اگه منظورتون اينه من ميتونم بهتون كمك كنم . :11::40:
این برنامه ای هست که با shamsi.dll نوشته شده حالا اگر تاریخ داخل text box رو عوض کنیم دیگه درست جواب نمیده.
لینکش رو میزارم ببینید. اگه همین درست جواب میداد خیلی خوب بود[IMG]file:///C:/DOCUME%7E1/Parastoo/LOCALS%7E1/Temp/moz-screenshot-2.jpg[/IMG]
[IMG]file:///C:/DOCUME%7E1/Parastoo/LOCALS%7E1/Temp/moz-screenshot.jpg[/IMG][IMG]file:///C:/DOCUME%7E1/Parastoo/LOCALS%7E1/Temp/moz-screenshot-1.jpg[/IMG]کد:http://www.4shared.com/file/218563638/e915aad1/Date_Name.html
سلام
اگر خواستید میتوانید از پک زیر استفاده کنید
support.h02.ir/fwlink/?LinkId=1001687457
این پک کاملاً با موارد تشریحی در تاپیک زیر منطبق است و بر اساس الگوریتم جلالی 33 ساله کار میکند:کد:http://support.h02.ir/fwlink/?LinkId=1001687457
یا
http://www.h02.ir/Downloads/?familyid=5412D010-6AFF-445C-BEC0-AFCF98130E3F
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
این فایل dll قبلاً در تاپیک زیر معرفی شده بود:
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
ولی متاسفانه ضمن عضر خواهی از دوستان و مخصوصاً جناب "بهرام_62" دیگر دسترسی درستی به VB6 قدیمی ندارم و نتوانستم سمپلی درست کنم.
ولی هر کدام از دوستان بخواهد از dll فوق استفاده کند و سوال و مشکلی داشته باشد میتوانم کمکش کنم.
مثلاً برای به دست آوردن روز هفته میتوان چنین نوشت:
یاکد:Dim dt As DATETIME
dt.Year = 1388
dt.Month = 11
dt.Day = 21
Dim dw As VBA.VbDayOfWeek
dw = PersianCalendar.GetDayOfWeek(dt)
و...کد:Dim dt As New PrDate
dt.Year = 1388
dt.Month = 11
dt.Day = 21
Dim dw As VBA.VbDayOfWeek
dw = dt.GetDayOfWeek
=====
برای استفاده هم کافی است در زمان کار در VB فایل dll در محل پروژه کپی شود (یا در System32) و برای کارکرد صحیح برنامه نهایی هم کافی است فایل در کنار Exe برنامه نهایی باشد.
دو فایل کد vb هم وجود دارد که باید با فرمان Project->Add File این دو فایل cs.* و bas.* را به پروژه VB6 خودتان اضافه کنید.
(البته اضافه کردن یکی شان هم کافی است! چون هر دو یک کار مشابه را از دو روش استفاده متفاوت انجام میدهند)
=====
البته لازم به ذکر است که مایکروسافت تقویم هجری شمسی از نسخه VB8 اضافه کرده است و در VB8/9/10 با چنین کدی در دسترس است:
یاکد:'VB2005/2008/2010
Dim c As New System.Globalization.PersianCalendar
Dim dw As DayOfWeek = c.GetDayOfWeek(c.ToDateTime(1388, 11, 21, 0, 0, 0, 0))
=====کد:'VB2005/2008/2010
Dim c As New System.Globalization.PersianCalendar
Dim dw As DayOfWeek = c.ToDateTime(1388, 11, 21, 0, 0, 0, 0).DayOfWeek
مشکلی داشتید میتوانید همینجا بیان کنید.
موفق باشید.
اول از همه از همه کسانی که راهنماییم کردن تشکر میکنم
مشکل من با این دستورات برطرف شد
کد:Public Function Shamsi2Miladi(shdate As String) As String
Dim shms As New ClassShamsi
Shamsi2Miladi = shms.Shamsi2Miladi(shdate)
End Function
فقط مشکل این دستورات اینکه که قبل از دادن خروجی خطای not valid میده نمیدونم خطاش چطوری باید برطرف بشه!کد:MsgBox WeekdayName(Weekday(Shamsi2Miladi(Text1.Text)))