سلام
مثالی در خصوص تبدیل تاریخ میلادی به شمسی از این سایت دانلود کردم PersianToolsSample ولی نتونستم در پروژه ام از اون استفاده کنم اگه ممکنه راهنمایی کنید.
سلام
مثالی در خصوص تبدیل تاریخ میلادی به شمسی از این سایت دانلود کردم PersianToolsSample ولی نتونستم در پروژه ام از اون استفاده کنم اگه ممکنه راهنمایی کنید.
PersianTools.dll کپی بکن تو پوشه binپروژت و بعد در اسکپرور سولیشن روی نام پروژه کلیک راست کن و گزینه add Refence رو بزن و این فایل رو انتخاب کن و بعد تویه قسمت choose Tool item اونو پیدا کن و بع فرمت اضافه کن
یا از کنترل مربوطه رو از روی فرم پروژه sample ی که داری کپی کن و روی فرم خودت paste کن(این یه کلک که من معمولا استفاده می کنم تا دنبال اون تو آیتم ها نگردم!)
اگه خروجی که بدست میاد رو خواسته باشیم به میلادی تبدیل کنیم مثلاً تاریخ 11/05/2007 توسط PersianTools.dll تبدیل به 21/02/1386 میشه و اینو در یک textbox قرار میدهیم حالا کاربر این تاریخ به تاریخ 22/02/1386 تبدیل می کنه چظور میتوان آنو به میلادی تبدیل کرد.
این persiantools یادمه تو بعضی از ماههای بعضی از سالها تاریخ رو اشتباه حساب میکرد چندین موردشو تو سالهای 1380 تا 1382 بهش برخوردم (منظورم تاریخ هست نه اینکه تو اون سالها تست شده!) ، تو سیستم خزانه ما مخصوصا باعث شد سود سرمایه رو اشتباه حساب کنیم و داد مشتری درومده بود بخاطر همین از پروژه حذفش کردم و از تاریخ جلالی که یکی از مدیران یاهو تو وبلاگش قرارداده بود و دقتش به میلی ثانیه بود استفاده کردم و خدا رو شکر مشکل ریشه ای حل شد . اگه پروژه رسمی مینویسین پیشنهاد میکنم ازش استفاده نکنین .
ممکنه تاریخ جلالی رو که گفتی آدرسشو قرار بدین. متشکرم
ممکن از ابزار دیگری استفاده کرده باشید با این نام
خروجی توابع این ابزار با خروجی خود توابع persian calendar .نت یکی هست و در نسخه آخری که روی سایت قرار دادم از خود توابع persiancalendar استفاده کرده ام.
این ابزار فقط کار با کلاس persiancalendar را راحت تر می کنه همین البته اصلاحاتی انجام دادم که آن را در این فروم گذاشتم اگر آخرین نسخه را دانلود کنید بدون نگرانی می توانید از آن استفاده کنید
برای تبدیل میلادی به شمسی
TextBox2.Text = pt.DateToPersian(TextBox1.Text ).LongDate
برای تبدیل شمسی به میلادی
pd = pt.PersianToDate(TextBox12.Text)
TextBox13.Text = pd.ToShortDateString
البته قبل از همه چیز بعد از اینکه فایل persiantools.dll را به Refrence هات اضافه کردی در ابتدای کلاس فرمت این کد را هم اضافه کن
Dim pt As New PersianToolS.PersinToolsClass
میشه با کلاس PersianCalendar تاریخ شمسی رو که بدست مییاد و در یک textbox قرار دادیم و حالا تاریخ رو مثلاً یک دو روز پس و پیش کنیم بعد بتونیم تاریخ شمسی درون textbox به تاریخ میلادی تبدیل کنیم. یعنی
textbox1=date farsi
تاریخ شمسی textbox1 مثلاً از 25/02/1386 به 27/02/1386 تغییر داده و
textbox2=convert textbox1 to date Miladi
دوستان این همه کد برات نوشتم که تبدیل دو طرفه رو انجام می ده شما باز می گی اگه تغییر بدم چطوری به میلادی تبدیل کنیم؟!!!!!
مثلا در کد دوستمون maroot این کار رو برات انحام داده؟
pd = pt.PersianToDate(TextBox1.Text)
TextBox13.Text = pd.ToShortDateString
من هنوز نمی دونم که مشکل شما چیه؟
این همه تابع و کلاس در زمینه تاریخ هست؟
اگه مشکلت حل نشد یه جسنجو بکن ببین چندتا کد دراین زمینه پیدا می کنی؟ البته به تاریخ پست ها توجه کن و کد ها که با دات نت 2 کار می کنند رو جدا کن
مشکل من اینه که میخوام روز هفته رو تبدیل کنم از persiantools استفاده نمیکنم فقط کلاس persiancalendar و توی تبدیل تاریخ شمسی به میلادی خطا تولید میکنه نمی دونم منظور من رو فهمدید یا نه این که عصبانیت نداره خوب شما حرفه ای هستید من تازه کار شاید بیان مطلب خوب نباشه و شما برداشت دیگری داشته باشید به هر حال از شما و دیگر دوستانی که محبت میکنند و امثال منو راهنمایی می کنند سپاسگزارم
من عصبانی نشدم که !!!!!!!!!!!!!
کدت رو بزار ببینیم کجاش مشکل داره؟
سلام
تصویر فرم و کد بخش مورد نظر را این قرار میدم متشکرم
PrivateSub txt_date_jalase_LostFocus(ByVal sender AsObject, ByVal e As System.EventArgs) Handles txt_date_jalase.LostFocus
Dim jc AsNew PersianCalendar
Dim dd As DateTime = DateTime.Now
Dim nameofday1 AsDouble
year = jc.GetYear(dd)
month = jc.GetMonth(dd)
day = jc.GetDayOfMonth(dd)
nameofday1 = jc.GetDayOfWeek(dd)
dayofyear1 = jc.GetDayOfYear(dd)
IfMe.txt_date_jalase.Text.Trim = year + "/06/31"Then
Dim dd1 As DateTime = CDate(year + "/07/01")
nameofday1 = jc.GetDayOfWeek(dd1)
If nameofday1 = 6 Then
nameof_day ="شنبه"
EndIf
If nameofday1 = 0 Then
nameof_day ="یکشنبه"
EndIf
If nameofday1 = 1 Then
nameof_day ="دوشنبه"
EndIf
If nameofday1 = 2 Then
nameof_day ="سه شنبه"
EndIf
If nameofday1 = 3 Then
nameof_day ="چهارشنبه"
EndIf
If nameofday1 = 4 Then
nameof_day ="پنج شنبه"
EndIf
If nameofday1 = 5 Then
nameof_day ="جمعه"
EndIf
Me.lbl_day_jalase.Text = nameof_day
Else
Dim dd1 As DateTime = CDate(Me.txt_date_jalase.Text)
SelectCase month
Case 1
month1 = "فروردین"
month ="01"
Case 2
month1 = "اردیبهشت"
month ="02"
Case 3
month1 = "خرداد"
month ="03"
Case 4
month1 = "تیر"
month ="04"
Case 5
month1 = "مرداد"
month ="05"
Case 6
month1 = "شهریور"
month ="06"
Case 7
month1 = "مهر"
month ="07"
Case 8
month1 = "آبان"
month ="08"
Case 9
month1 = "آذر"
month ="09"
Case 10
month1 = "دی"
Case 11
month1 = "بهمن"
Case 12
month1 = "اسفند"
EndSelect
SelectCase day
Case 1
day = "01"
Case 2
day = "02"
Case 3
day = "03"
Case 4
day = "04"
Case 5
day = "05"
Case 6
day = "06"
Case 7
day = "07"
Case 8
day = "08"
Case 9
day = "09"
EndSelect
nameofday1 = jc.GetDayOfWeek(dd1)
IfMe.txt_date_jalase.Text.Trim >= year + "/07/01"AndMe.txt_date_jalase.Text.Trim < year + "/08/01"Then
nameofday1 += 1
If nameofday1 = 7 Then
nameofday1 = 0
EndIf
EndIf
If nameofday1 = 6 Then
nameof_day ="شنبه"
EndIf
If nameofday1 = 0 Then
nameof_day ="یکشنبه"
EndIf
If nameofday1 = 1 Then
nameof_day ="دوشنبه"
EndIf
If nameofday1 = 2 Then
nameof_day ="سه شنبه"
EndIf
If nameofday1 = 3 Then
nameof_day ="چهارشنبه"
EndIf
If nameofday1 = 4 Then
nameof_day ="پنج شنبه"
EndIf
If nameofday1 = 5 Then
nameof_day ="جمعه"
EndIf
Me.lbl_day_jalase.Text = nameof_day
EndIf
EndSub
datef = year +"/" + month + "/" + day
سلام
شما در ابتدای برنامه به dd مقدار دادی که نباید بدی چون اینطوری فقط امروز رو به دست میاری به جای این که به dd مقدار datetime.now را بدی، مقدار textbox رو بده که حتی اگه کاربر تغییر داد فرقی برای برنامه نکنه و کارش رو انجام بده.
یعنی در خط 5 بنویس dd=txt_date_jalase.text
ولی یک نکته مهمتر از همه:
به جای این همه IF از select case استفاده کن، که واقعا در مورد برنامه شما معجزه می کنه.
موفق باشی.