# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > ASP.NET Web Forms >  نمایش تاریخ فارسی به هر حالتی که دوست داشته باشید

## mahdi_farhani

آخرین نسخه : 
LatstRelease_FarhaniPersianDate.zip
اضافه شده در تاریخ 30 تیرماه 91
---------------------------------------------------------
اینم یه dll برای شما دوستان که با تاریخ فارسی مشکل دارین .
از مزایای این dll که خودشتو متمایز میکنه اینه که شما میتونید فرمت خروجی را براش مشخص کنید .
لطفا  اشکلاتشو بم بگید تا اصلاحش کنم .
متدها و نحوه استفاده
توضیح هرکدوم از متدها و ویژگیها در خود کلاس گذاشته شده ولی با این حال یه توضیح کوچیک میدم .
تعریف کلاس و نمونه سازی از آن
C#‎‎‎‎

	farhaniPersianDate.cDate perDate=new farhaniPersianDate.cDate();

VB

Dim preDate as new farhaniPersianDate.cDate()

به صورت پیش فرض پس نمونه سازی از کلاس تاریخ جاری سیستم با فرمت yyyy/mm/dd به فارسی تبدیل می شود 
خاصیت ها
این خاصیتها  فقط قابلیت خواندن را دارند.
Year  =  نمایش سال به صورت عددی
Month = نمایش ماه به صورت عددی
Day  =  نمایش روز به صورت عددی
dayDateName  =  نمایش روز به صورت فارسی ( یکم ، دوم ، ..... ، سی ام )
DayName =  نمایش نام روز ( شنبه ، یکشنبه ، دوشنبه )
monthName =  نمایش نام ماه : بهمن
yearFarsi =  نمایش سال به صورت حرفی ( یک هزارو سیصدو هشتادو شش ) 
separatorChar
برای جداکننده بین قسمت های مختلف
C#‎‎‎‎

perDa.separatorChar='*'

VB

perDa.separatorChar="*"

نمونه ایی از خروجی : 20*10*1386

displyFormat
شما با استفاده از این خاصیت میتوانید نحوه نمایش خروجی را تعیین کنید که به شرح زیر می باشد
YY ,yy
برای نمایش عدد سال استفاده میشه -> 1386
YYYY,yyyy
برای نمایش حرفی سال استفاده میشه -> یک هزارو سیصدو هشتادو شش
MM
برای نمایش نام ماه : بهمن
mm
برای نمایش ماه : 10
dn
برای نمایش نام روز : شنبه
dd
برای نمایش روز : 20
DD
برای نمایش روز به صورت حروف : بیستم
/
برای گذاشتن جداکننده که در خاصیت جداکننده تنظیم شده است 
نمونه فرمت تنظیم شده: "امروز:;dn;DD;MM;سال;YYYY"
خروجی : امروز : پنجشنبه بیستم بهمن سال یک هزارو سیصدو هشتادو شش
C#‎‎‎‎

perDate.displyFormat = "امروز:;dn;DD;MM;سال;YYYY";

VB

perDate.displyFormat = "امروز:;dn;DD;MM;سال;YYYY"

توابع
        fulDate
تابعی برای کامل کردن تاریخ
یعنی اگر شما تاریخی را به این صورت وارد کنید 1/1/86 خروجی تابع به صورت 01/01/1386 می باشد ، البته با توجه به جداکننده تاریخ
        getPersianDate
این تابع که 4 بار سر بار گذاری شده است برای تبدیل تاریخ استفاده می شود .
خروجی کلیه این تابع ها رشته ای است که با فرمت مورد نظر خود تنظیم کردیداید
1-	getPersianDate()
تاریخ جاری سیستم را به شمسی تبدیل میکند
2-	getPersianDate(DateTime miladiDate) 
یک ورودی از نوع تاریخ میلادی گرفته و آن را به شمسی تبدیل میکند
3-	getPersianDate(String strMiladiDate)
یک وردی از نوع رشته که مقدار آن یک تاریخ میلادی است را به شمسی تبدیل میکند
4-	getPersianDate(int iYear, int iMonth, int iDay)
سه ورودی از نوع عددی که شامل سال ، ماه ، روز میلادی می باشد و تبدیل آن به صورت شمسی

isfulDate(String strDate)
این تابع بررسی میکند که آیا تاریخ وارد شده کامل است یا نه
        isValidDete
این تابع بررسی میکند که آیا تاریخ وارد شده معتبر است یا خیر
موارد بررسی شده : معتبر بودن اعداد ( یعنی اینکه برای روز بین 1 تا 31 و ماه 1 تا 12)
بررسی 31 روزه بودن شش ماه اول و 30 روز شش ماه دوم
بررسی سال کبیسه برای ماه 12 که باید 29 روز در صورت کبیسه بودن 30 نیز مجاز می باشد .

نکته : رشته ای که در توابع fullDate,isFullDate,isValidDate وارد میشه حتماً باید با جداکننده آن با آنچه که تعیین شده برابر باشد.
RevrseDate
این تابع 2 بار سر بارگذاری شده است که به برای تغییر جهت نمایش استفاده میشه ، این تابع بیشتر زمانی استفاده میشود که شما دسترسی با کلاس نداشته باشید و حتی نمونه ای از آن ساخته نشده است . و میخواهید تاریخ مورد نظر بر عکس نمایش داده شود . 
مثلاً اگر دقت کرده باشید در بعضی مواقع با توجه به اینکه چیدمان (align) Label و یا Text و ... تنظیم هست تاریخ مورد نظر شما بر عکس نمایش داده میشود به این شکل 1386/01/01 برای این کار شما میتوانید از این تابع استفاده کنید .
در ضمن یکی از جاهایی که خیلی برای من مهم بود در گرید ها بود که به راحتی میتوانید از این تابع استفاده کنید
سر بار گذاری های انجام شده بر اساس نوع ورودی به رشته (String) و شئ (Object) صورت گرفته است
نکته : شما میتوانید برای نمایش بر عکس تاریخ فرمت آن را بر عکس تنظیم کنید.
این تابع همانطور که در بالا اشاره کردم بیشترین کاربرد را در استفاده آن در گرید ها دارد .
showInDisplyFormat (String strDate)
این تابع تاریخ وارد شده را بر اساس قالب تنظیم شده نمایش می دهد . 
نکته : با توجه به جداکننده باید رشته ورودی تنظیم شود.
نوع
perDayWeek
این نوع شمارشی روز های هفته است . 
----
فایل مستند XML آن هم برای استفاده از توابع در کنار dll وجود دارد
امیدوارم که به دردتون بخوره

----------


## mahdi_farhani

نسخه 1.1 آماده شد 
با قابلیت تبدیل تاریخ شمسی به دیگر تاریخها و همچنین بلعکس
میلادی ، قمری ، عبری ، بودایی ، ژاپنی ، کره ای ، ...
( البته فکر نکنم زیاد به درد کسی بخوره )
و همچنین با استفاده از تکنیک سربارگذاری عملگرها یکسری علمگر اضافه شده 
اضافه کردن و کم کردن یک روز ، ماه 
مقایسه دو تاریخ
برای اضافه کردن روز 
Perdate+=1
برای اضافه کردن ماه
perdate>>1
برای کم کردن روز
Perdate-=1
برای کم کردن ماه
perdate<<1
برای مقایسه هم میتوانید از == , != , < , > , بزگتر مساوی ، و کوچکتر مساوی ( چون بر عکس میشد مجبور شدم بنویسم )

----------


## mehrdad201

ببخشید که میپرسم آیا فقط خود دی ال ال رو گذاشتید یا اینکه سورسش رو هم برای بررسی در اختیار دوستان قرار میدید ؟؟؟؟؟

----------


## mahdi_farhani

سورس هم به موقعه میدم ، ولی الان زوده

----------


## mahdi_farhani

این 36 نفری که دانلود کردن ، آیا نظری ندارن ؟
یعنی تایید شد ، رفت دیگه . مشکل نداره ؟

----------


## en_bey

سلام

دوست عزیز از این DLL بصورت DatePicker
میشه استفاده کرد ؟ یا اون رو چطوری میشه تبدیل کرد

----------


## mahdi_farhani

نه هنوز نمیشه ، ولی در دارم سعی میکنم اونو درست کنم .

----------


## ar_monti@

ببخشید این dll را چگونه به برنامه ام Add کنم. منظورم.
.............using farahanipersiandate

----------


## mahdi_farhani

بعد از اینکه به Refrence ها اضافه کردی
به این شکل عمل کن

using farhaniPersianDate

تعریف متغییر 

cDate perDate=new cDate()

اگر هم خواستی از کلاس Convert استفاده کنی بهتره که فضای نام اونو رو هم تایپ کنی 
farhaniPersianDate.Convert.

----------


## azygole

با سلام . آقای فراهانی من فایل شما رو به toolbar اضافه می کنم این خطا رو میده میشه منو راهنمایی کنید . با تشکر فراوان

----------


## mahdi_farhani

عزیز دل بردار ، اینکه کامپوننت که نیست که بخواهی تو تولباکس ازش استفاده کنی ، این یک منبع است . فکر کنم اشتباه برداشت کردی این تقویم فارسی نیست ، کلاس است برای کار با تاریخ فارسی .

----------


## mehrdad201

راستی واسه قضیه دیت پیکرش اقدامی کردی ؟

در ضمن اون قضیه adddays رو توش در نظر گرفتی (یادمه که کلاس persiancalendar تو این قضیه مشکل داشت که جناب راد هم در موردش توضیح داده بودن)

----------


## mahdi_farhani

DatePicker هنوز وقت آزاد پیدا نکردم که بشینم روش کار کنم .
اون قضیه AddDays هم با سربارگذاری عملگرهایی که انجام دادم مشکلش حل شده بود .

----------


## azygole

سلام آقای فراهانی . من بلد نیستم از یه منبع استفاده کنم . میشه راهنماییم کنید ؟ خیلی خیلی خیلی ممنون میشم .

----------


## mahdi_farhani

1- اضافه کردن Refrence(منبع) به پروژه  از منوی Web site -> add Refrence و یا اگر Windows Application کار میکونید Projects ->add refrence 
2- اضافه کردن فضای نام به کلاس مورد نظر
C#‎
Using FarhaniPersianDate
VB
Imports FarhaniPersianDate
بقیه هم که قبلاً توضیح دادم

----------


## اَرژنگ

> سورس هم به موقعه میدم ، ولی الان زوده


از چه لحاظ ؟؟ روش معمولی این است که سورس دراختیار باشد.

----------


## mahdi_farhani

یعنی چی ، سورس در اختیار باشد . در اختیار کی ، من یا دوستان

----------


## اَرژنگ

> یعنی چی ، سورس در اختیار باشد . در اختیار کی ، من یا دوستان


همه کسانیکه که قرار است تست کنند. مخصوصا اگر اساتید بخواهند امتحانش کنند. کسی یک قوطی سیاه را امتحان نمیکند، مگر اینکه برایه کارهایه تجاری باشد. 
روش معمولی در اختیار گذاشتن کامل سورس کد است.

----------


## mahdi_farhani

من سورسو در اختیار میزارم ، ولی میخوام کاملش کنم بعد اونو در اختیار دوستان بزارم ،لازم به ذکر است در حال حاضر بعضی از دوستان این سورس و در اختیار دارن .

----------


## mahdi_farhani

نسخه 1.1.1 
Bug:به علت اینکه زیاد با زمان کار نکرده بودم ، بعضی از تاریخ ها را مشکل پیدا میکرد ، این مشکل زمانی پیش میاد که ساعت بر اساس ساعت تهران نباشه . مثلاً رویه یکی از سرورها ساعتش روی تگزاس تنظیم شده بود و ساعت 9 صبح برای من تاریخ رو عوض میکرد . این مشکل در این نسخه رفع شده است .

اضافه کردن تابع  DateDiff برای بدست آوردن اختلاف دو تاریخ به تعداد روز .
و همچنین سربار گذاری عملگر  - برای این کار

با کمک برنامه FoxCop این کلاس به استانداردهای نزدیک شده است.
برای استفاده از کلاس باید از این فضای نام استفاده کنید

Farhani.PersianDate

و همچنین کلاس تبدیل تاریخ از cDate به PerDate تغییر نام پیدا کرد .

----------


## اَرژنگ

> نسخه 1.1.1 
> Bug:به علت اینکه زیاد با زمان کار نکرده بودم ، بعضی از تاریخ ها را مشکل پیدا میکرد ، این مشکل زمانی پیش میاد که ساعت بر اساس ساعت تهران نباشه . مثلاً رویه یکی از سرورها ساعتش روی تگزاس تنظیم شده بود و ساعت 9 صبح برای من تاریخ رو عوض میکرد . این مشکل در این نسخه رفع شده است .


اگر سورس را در اختیار همه میگذاشتید بقیه هم میتونستند کمک و یا نظری بدند،این باگها و مشکلات هم تندتر حل میشد و هم شما و بقیه یک چیزی یاد میگرفتند.

----------


## mahdi_farhani

هربار که ازش استفاده میکنن ، نگید خدا لعنتش کنه ، به یاد ما هم باشید ، چون فقط 12 روز دیگه پیشتون هستم :گریه: 
فقط دوست دارم ، تمام اشکالتو بم گید ، حتی اگر نام متغییری را مناسب انتخاب نکردم بم بگید

----------


## babakj

> نسخه 1.1.1 
> Bug:به علت اینکه زیاد با زمان کار نکرده بودم ، بعضی از تاریخ ها را مشکل پیدا میکرد ، این مشکل زمانی پیش میاد که ساعت بر اساس ساعت تهران نباشه . مثلاً رویه یکی از سرورها ساعتش روی تگزاس تنظیم شده بود و ساعت 9 صبح برای من تاریخ رو عوض میکرد 
> 
> .


می تونی اول ساعت رو تبدیل کنی به گرینویچ بعد بهش 3.5  ساعت اضافه کنی 
اینجوری دیگه روی هر سروری جواب میده / 

این مقاله رو هم خودم نوشتم برای رفع همین مشکل
لطفا به اینجا مراجعه نمایید  .  
https://barnamenevis.org/showthread.php?t=94579

----------


## mahdi_farhani

دوست عزیز ممون از راهنمایتون ، ولی  مشکلشو حل کرده بودم ، اگر به سورس نگاه میکردی متوجه میشدی .

----------


## rasulp

آقا مهدی خان فرحانی (یا فرهانی) کارتون بسیار عالی بود ولی اگه میشه تفاوت دو تا تاریخ 29/فوریه/2008 رو با 01/مارس/2008 با تابعی که زحمت کشیدید نوشتید بدست بیارید. از اونجا که فوریه امسال 29 روزه، فکر می کنم تابع عدد درستی رو برنمیگردونه.

----------


## mahdi_farhani

دوست عزیز ممنون از توجهتون ، ولی من که مشکلی ندیدم . تست هم کردم درست جواب داد .

----------


## rasulp

آقا مهدی فکر کردم دیگه جواب نمیدین چون تو چند تا پست قبلی نوشته بودید که قراره نباشید!
در هر صورت مطلبی رو که خدمتتون عرض کردم راجع به اختلاف دو روز 29 فوریه و اول مارس قاعدتا اختلاف این دو روز میشه 2 روز ولی با کد شما تفاوت رو سه روز نشون میده یعنی 30ام فوریه رو هم حساب میکنه.
اگه من اشتباه می کنم محبت کنید بفرمایید

----------


## mahdi_farhani

میرم کمکم ، به خاطر کنکور کارشناسی ارشد ، تمامی اعزام های 1 و 2 اسفند به 5و6 موکل شده .................
**********************
اولاً که اختلاف 29 و 1 میشه 1 روز نه 2 روز .
شما اگر یه بار کدها رو تست کنید متوجه میشد .
اگر هم تست کردید ، کدی که نوشته شده را بزارید تا بررسی کنم .
من تا فردا بیشتر نیستم .

----------


## rasulp

Dim MyDateTime AsDate = Calendar1.SelectedDate
Dim MyDateTime2 AsDate = Calendar2.SelectedDate
Dim Mystr2 AsString
Dim MyStr AsString
MyStr = Format(MyDateTime, "yyyy/MM/dd")
Mystr2 = Format(MyDateTime2, "yyyy/MM/dd")
Label2.Text = Farhani.PersianDate.PerDate.DateDiff(Mystr2, MyStr)

----------


## roya_dibaj

سلام دوست عزیز این کد شما بسیار جالب است ولی من مشکلم این است که ورودی که می دهم شامل ساعت و AM یا PM است و توابع شما فقط تاریخ را می گیرند حالا من یک همچین ورودی را چطوری تبدیل کنم ؟
1-Feb-08 10:00:00 AM

----------


## rasulp

آقا مهدی عزیز ظاهرا مشکل من رفع شد. تفاوت دو تا تاریخ رو بنده با تاریخ میلادی امتحان کرده بودم که جواب نادرستی می داد. اما با تاریخ شمسی درست کار میکنه
در جواب شما هم عرض کنم برای گرفتن تاریخ می تونید از کد زیر استفاده کنید
Calendar1.SelectedDate.Date

----------


## reza1944

عزیز این فایل روبگیر تو ویژوال ایمپرت کن حالشو ببر واسه تاریخ فارسی تشکر یادت نره

----------


## rasulp

میشه خواهش کنم کلاس هاشو و یه چند تا کد براش بذاری؟

----------


## rasulp

یافتم:

Dim a AsNew PersianToolS.PersinToolsClass
Dim a1 AsString
Dim b AsNew PersinToolsClass.PersianDate
a1 = a.DateToPersian(DateTime.Now).ShortDate
label1.Text = a1
label2.Text = a.ISPersianLeapYear(DateTime.Now.Year)
label3.Text = a.PersianToDate(a1).ToString

----------


## Nasim_m

من برای تاریخ شمسی در برنامه ام از DLL شما استفاده کردم دست شما درد نکند ولی هنوز برایی زمانهایی که بر اساس تهران نباشد مشکل دارد (من نسخه 1.1.1) را دانلود کردم
ضمن اینکه در صفحاتی که rtl باشد تاریخ را برعکس نشان می دهد اگر توضیحی در مورد تایعRevrseDate بدهید ممنون می شوم.

----------


## mahdi_farhani

> من برای تاریخ شمسی در برنامه ام از DLL شما استفاده کردم دست شما درد نکند ولی هنوز برایی زمانهایی که بر اساس تهران نباشد مشکل دارد (من نسخه 1.1.1) را دانلود کردم
> ضمن اینکه در صفحاتی که rtl باشد تاریخ را برعکس نشان می دهد اگر توضیحی در مورد تایعRevrseDate بدهید ممنون می شوم.


میشه بگی چه مشکلی داره ،
خوب با تعیین فرمت میتونی برعکس نمایش بدی 
yyyy;/;mm;/;/dd یا dd;/;mm;/;yyyy
ReverseDate هم تابعی هست که تاریخ وارد شده را برعکس میکنه ، بیشتر جاهایی استفاده میشه که نتونی فرمت بش بدی ، مثلاً تو گریدها
چون این تابع به صورت Static تعریف شده نیازی به نمونه سازی از کلاس نداری
Farhani.PersianDate.Perdate.ReverseDate(yourDate ) میتونی استفاده کنی

----------


## Nasim_m

> میشه بگی چه مشکلی داره


همون مشکلی که در پست های قبلی هم گفتند اگر روی تهران نباشد به جای ساعت 12 در ساعت های دیگر روز عوض می شود

----------


## mahdi_farhani

این مشکل حل شده ، نمیدونم شما چه طور مشکل دارید .

----------


## mjhsoft

آقا واقعا زحمت کشیدی به منکه خیلی کمک کرد تاریخ شمسی ولی 1 مشکله کوچیک دیدم گفتم مطرح کتم حلش کنی
به جای *فروردین* اشتباه *فرودرین* تایپ کردی
من ایجوری حلش کردم ولی خوب اصولی نیست :
 
HijriDate2.getPersianDate().Replace("فرودرین","فروردین");

----------------------------------------
m.j.hashemi

----------


## mahdi_farhani

ممنون از لطفتون .... سورس که دستتون هست ، اونو تغییر بدید و دوباره dll کنید .

----------


## Mohammad_chz

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

باز هم از dll خوبی که نوشتین تشکر می کنم

----------


## mahdi_farhani

ممنون از لطفتون
1- با عرض پوزش به خاطر اشتباه تایپی که پیش آمده ، سورس تو صفحه 3 پست 24 هست میتونی از اونجا دانلود کنی .
2- کار زیاد سختی نیست ، اگر بی زحمت خودت اضافه کن. شرمنده من 2 روز بیشتر مرخصی ندارم به همین خاطر وقت نمیکنم .
اگر اضافه کردی همراه با سورس در اختیار دوستان قرار بده .
و در ضمن کدهایی که تغییر میدی رو مشخص کن که توسط شما تغییر پیدا کرده .

----------


## mahdi_farhani

Bug: مشکل جدید که در ساختار تاریخ پیدا کردم ، با TimeDaylight هست .
راه حل : هنوز پیدا نشده .
مشکل : عدم انجام عملیات به درستی به علت تغییر اختلاف زمانی از +3:30 به +4:30 .

----------


## Behrouz_Rad

> عدم انجام عملیات به درستی به علت تغییر اختلاف زمانی از +3:30 به +4:30 .


در جریان هستی که ساعت اروپا هم چند روزه که 1 ساعت به جلو کشیده شده و الان هم همون 3:30+ هستیم؟

----------


## mahdi_farhani

نه اینو نمیدونستم ، ممنون از اینکه گفتی

----------


## rasulp

دوست عزیز میشه خواهش کنم DatePicker رو هم کد نویسی کنی، فکر میکنم با این تسلطی که شما داری براتون خیلی راحت باشه، باز هم تشکر از زحمتی که کشیدی.

----------


## gheysar14

وقتی می خوام از تو دیتابیس که تاریخ های میلادی رو تو او ن ذخیره کردم  یه روزی از تاریخ رو سرچ کنم ارور _"شنبه" Incorrect syntax inear_  رو میده. به نظر شما مشکل از کجاست؟

----------


## Hossein1429

سلام مهدي جان
سوالي كه فكر مي كنم كسي مطرح نكرد ( شايدم مطرح كرده و من نديدم ) اين هست

كه آيا در تقويم شما سال كبيسه هم مد نظر بوده يا نه؟
يعني ما با خيال راحت مي تونيم از اون استفاده كنيم؟

با تشكر
=================================

زندگي هنگامه فريادهاست

يا علي

----------


## el_abdollahi

ایشون فعلا در حال سپری کردن خدمت سربازی هستن. :لبخند گشاده!: 
ولی به هر حال FarhaniPersianDate سال کبیسه رو هم پشتیبانی میکنه.
میتوننین با خیال راحت استفاده کنید.
موفق باشید.

----------


## s_mehdi

سلام شما علاوه بر این Dll که دوستمون معرفی کرده برای تاریخ فارسی از خود دات نت هم می تونید استفاده کنید . از System.Globalization استفاده کنید . 
از کلاس PersianCalendar و متد های GetYear و ... استفاده کنید.
در ضمن هر کی سرس تبدیل تاریخ رو خواست بگه ...(سال کبیسه هم در نظر می گیره)

----------


## mahdi_farhani

> سلام شما علاوه بر این Dll که دوستمون معرفی کرده برای تاریخ فارسی از خود دات نت هم می تونید استفاده کنید . از System.Globalization استفاده کنید . 
> از کلاس PersianCalendar و متد های GetYear و ... استفاده کنید.
> در ضمن هر کی سرس تبدیل تاریخ رو خواست بگه ...(سال کبیسه هم در نظر می گیره)


دوست عزیز این dll که با سورس اینجا گذاشته شده ،با استفاده  از Persiancalnder خوده دات ایجاد شده ..... سال کبیسه هم در نظر میگیره .

----------


## shahabsaed

سلام دوتان عزيز
از دوست گرامي كه زحمت اين تاپيك رو كشيده و اين dll رو آماده كرده متشكرم . اگه ممكنه اين دوست عزيز منو با اين آيدي Add كنه تا بنونيم راحتتر راجع به افزودن Datetimepicker فارسي به اين Dll صحبت كنيم
براي تمامي دوستان آرزوي موفقيت دارم.
اگه دوستان هم در زمينه DataBase و مخصوصا Sql Server امري داشتن در خدمتم.
shahabsaed@yahoo.com

----------


## kardar2007

با عرض سلام خدمت دوستان
می خواستم بدونم چه جوری میشه توی application یک تقویم فارسی نمایش داد ؟

----------


## msadgd

سلام به همگي

مختصر و مفيد مي گم. من فايل مربوطه رو دانلود كردم و بع عنوان رفرنس هم به پروژه اضافه كردم. (دارم asp.net  مي نويسم) الآن مي خوام تاريخ توي يك Label بهم نشون داده بشه اما بعد از اجرا علامت / را نميگذاره چكار بايد بكنم؟
ممنون
 Imports farhaniPersianDate
Partial Class MasterPage2
    Inherits System.Web.UI.MasterPage

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim perdate As New farhaniPersianDate.cDate
        perdate.displyFormat = "امروز:;yy;mm;dd;dn"
        perdate.separatorChar = "/"
        Dim dat As String = perdate.getPersianDate()
        Label1.Text = dat
    End Sub
End Class

----------


## mahdi_farhani

خوب شما بش نگفتیت که براتون seprator بزاره
امروز;/;

----------


## panjereh

سلام
آیا تقویم فارسی که بصورت کنترل تقویم نمایش داده بشه

----------


## merlin_vista

سلام آقاي فرهاني . 
من از كامپونت شما استفاده كردم . ولي يه مشكل در تبديل تاريخ ميلادي به شمسي وجود دارد كه اگر رفع شود ممنون ميشم . 
من با استفاده از كامپونت شما تاريخ ميلادي سرور را گرفته و به شمسي تبديل كرده و در Textbox نمايش ميدهم . مثلاً اين 2008/11/30 09:00:00 ب.ظ تبديل ميشود به 1387/09/10 و نمايش پيدا ميكند در تكست . 

سپس با زدن يك دكمه عمليات فوق بر عكس شده يعني 1387/09/10 تبديل ميشود به 2008/11/30 09:00:00 ب.ظ و در بانك ذخيره ميشود . حال براي نمايش دوباره تاريخ به صورت شمسي من تاريخ درج شده ميلادي را از بانك گرفته و به شمسي تبديل ميكنم . ولي مشكلي كه وجود دارد اين است كه تاريخ يك روز زود تر نمايش پيدا ميكند يعني مينويسد . تاريخ : دوشنبه 11 آذر 1387   ساعت : 9:00:00 PM  . 

اين هم تابع اي كه با استفاده از كتابخانه شما نوشته شده است كه تاريخ ميلادي را گرفته و به شمسي تبديل ميكند و لي همين طور كه گفتم يك روز تاريخ را جلو ميزنه . 
public string ChangeDate(string Date)
                {
                    Farhani.PersianDate.PerDate pc = new Farhani.PersianDate.PerDate();
                    pc.GetPersianDate(Convert.ToDateTime(Date));

                    return pc.DayOfWeek.ToString() + " " + pc.Day.ToString() + " " + pc.MonthName.ToString() + " " + pc.Year.ToString();
                }

----------


## sheitoonbala

سلام  آقای فرهانی.
می گم اگه خود تاریخ میلادی رو هم اضافه کنید به تاریخ هاش دیگه توووپ میشه.چون خود DateTime مثلا MonthName نداره.

----------


## mahdi_farhani

این مشکل برمیگرده به Daylight ولی این مشکل رو یه جورایی حل کردم . نمیدونم شما از کدوم نسخه دارید استفاده میکنید .برای همین بهتره که از این dll استفاده کنی ،تست کن اگر مشکل داشت بهم خبر بده تا مشکلشو برطرف کنم .

دوست عزیز برای تاریخ میلادی از form های مختلف خوده دات نت میتونی استفاده کنی ، سرچ کنی پیدا میکنی .

----------


## sheitoonbala

سلام. نه DLL شما مسکلی نداره ، ممنون. مشکل من با تابع GetDateTimeFormats خود دات نت هست که توی هیچ فرمتیش نام ماه رو بصورت کامل مثلا  December نشون نمیده. تنها بصورت کوتاه 3 حرفی مثلا  Nov  یا  Dec  نشون میده. ظاهرا 36 فرمت هم بیشتر نداره. ممنون

----------


## merlin_vista

> سلام آقاي فرهاني . 
> من از كامپونت شما استفاده كردم . ولي يه مشكل در تبديل تاريخ ميلادي به شمسي وجود دارد كه اگر رفع شود ممنون ميشم . 
> من با استفاده از كامپونت شما تاريخ ميلادي سرور را گرفته و به شمسي تبديل كرده و در Textbox نمايش ميدهم . مثلاً اين 2008/11/30 09:00:00 ب.ظ تبديل ميشود به 1387/09/10 و نمايش پيدا ميكند در تكست . 
> 
> سپس با زدن يك دكمه عمليات فوق بر عكس شده يعني 1387/09/10 تبديل ميشود به 2008/11/30 09:00:00 ب.ظ و در بانك ذخيره ميشود . حال براي نمايش دوباره تاريخ به صورت شمسي من تاريخ درج شده ميلادي را از بانك گرفته و به شمسي تبديل ميكنم . ولي مشكلي كه وجود دارد اين است كه تاريخ يك روز زود تر نمايش پيدا ميكند يعني مينويسد . تاريخ : دوشنبه 11 آذر 1387   ساعت : 9:00:00 PM  . 
> 
> اين هم تابع اي كه با استفاده از كتابخانه شما نوشته شده است كه تاريخ ميلادي را گرفته و به شمسي تبديل ميكند و لي همين طور كه گفتم يك روز تاريخ را جلو ميزنه . 
> public string ChangeDate(string Date)
>                 {
> ...


سلام . 
مشكل فوق فقط روي هاست ميباشد و روي لوكال مشكلي ندارد .  :متفکر: 
با تشكر از شما  :قلب:

----------


## mahdi_farhani

هرچی هست ، مشکل سر این ساعت هست . باید یکسری اطلاعات بدست بیاریم که چرا این مشل پیش میاد . متاسفانه چون دسترسی به سایتتون ندارم نمیتونم ریز بشم ، ولی اگر لفط کنید خودتون یکسری تست ها رو انجام بدید ممنون میشیم ، شاید اصلاً یک باگ باشه که من متوجه اون نشدم .
 Farhani.PersianDate.PerDate myDate = new Farhani.PersianDate.PerDate();
        Response.Write("Perdate = " + myDate.GetPersianDate() + "<br />");
        DateTime IranTime = new DateTime();
        IranTime=DateTime.Now.ToUniversalTime().AddHours(3  ).AddMinutes(30);
        Response.Write("ServerTime= " +IranTime.ToString() + "<br />");
با استفاده از این کد ببین خروجی چی بهت میده ، این کد فقط ساعت سیستم را به GMT برمیگردونه ، حالا اگر ساعت که برگشت داده شده با ساعت محلی یکی بود اون موقعه مشکل جایی دیگه هست

----------


## matrixrayaneh

ممنون از شما
من میخوام اختلاف دو تاریخ شمسی رو بدست بیارم ولی تو تاریخ ماههایی که 30 یا 31 ندارن مشکل ایجاد میکنه
اگه اشتباه میکنم راهنماییم کنین
البته من از DateDiff استفاده کردم اگه با توابع شما میشه کدش رو برام بذارید

----------


## mahdi_farhani

از عملگر - (منها) استفاده کنید . تابع خاصی نداره

----------


## GISMan

اول مي خواستم بابت زحمتي كه كشيديد ازتون تشكر كنم، واقعا كامپوننت بدرد بخوريه :تشویق:  ولي تو كد هاي مربوط به سربارگذاري اپراتورها به نظرم مشكل وجود داره به طور مثال در مورد اپراتور نامساوي كد فعلي به اين صورته
         public static bool operator !=(PerDate firstPersianDate, PerDate otherPersianDate)
        {
            if (firstPersianDate.Day != otherPersianDate.Day)
                if (firstPersianDate.Month != otherPersianDate.Month)
                    if (firstPersianDate.Year != otherPersianDate.Year)
                        return true;
            return false;

        } كه از اونجايي كه وقتي هر جزء (روز، ماه يا سال) دو تاريخ با هم مساوي نباشند اونوقت خود دو تاريخ هم با هم مساوي نيستند پس كد فوق بايد به صورت زير اصلاح بشه
        public static bool operator !=(PerDate firstPersianDate, PerDate otherPersianDate)
        {
            if (firstPersianDate.Day != otherPersianDate.Day ||
                firstPersianDate.Month != otherPersianDate.Month ||
                firstPersianDate.Year != otherPersianDate.Year)
                        return true;
            else
                return false;
        }
البته با اجازه من يه سري بهينه سازياي ديگه هم تو كد شما انجام دادام، خوب فكر كنم خوبي پروژه هاي اپن سورس همينه ديگه، اگه خواستيد اونا رو هم براتون ميذارم :لبخند: 
موفق باشيد.

----------


## mahdi_farhani

دوست عزیز لطف کنید که تغییرات رو پابلیش کنید تا دوستان استفاده کنن

----------


## GISMan

در مورد اپراتور < جاي دستور مقايسه ماه و روز بايد جابجا شود
 public static bool operator >(PerDate firstPersianDate, PerDate otherPersianDate)
        {
            if (firstPersianDate.Year > otherPersianDate.Year)
                return true;
            if (firstPersianDate.Day > otherPersianDate.Day)
                return true;
            if (firstPersianDate.Month > otherPersianDate.Month)
                return true;
            return false;
        }كد اصلاح شده
     public static bool operator >(PerDate firstPersianDate, PerDate otherPersianDate)
        {
            if (firstPersianDate.Year > otherPersianDate.Year)
                return true;
            if (firstPersianDate.Month > otherPersianDate.Month)
                return true;
            if (firstPersianDate.Day > otherPersianDate.Day)
                return true;
            return false;
        }

----------


## GISMan

در مورد متد IsValidDate مقايسه دوم day>31 لزومي ندارد چرا كه تو دستور if قبلي اين مقايسه انجام شده اين مطلب در مورد مقايسه دوم day>30 هم صادقه.
        public Boolean IsValidDate(String date)
        {
            if (!IsFullDate(date))
                date = FullDate(date);
            if (date.Length < 10)
                throw new InvalidDateException("تاریخ وارد شده معتبر نیست");
            int year = int.Parse(date.Substring(0, 4), CultureInfo.InvariantCulture);
            int month = int.Parse(date.Substring(5, 2), CultureInfo.InvariantCulture);
            int day = int.Parse(date.Substring(8, 2), CultureInfo.InvariantCulture);
            if (year < 0 || month > 12 || month < 0 || day < 0 || day > 31)
                return false;
            if (month <= 6 && day > 31)
                return false;
            if (month >= 7 && day > 30)
                return false;
            if (month == 12 && day > 29)
                if (!pcMydate.IsLeapYear(year))
                    return false;
                else
                    if (day > 30)
                        return false;
            return true;
        }كد بهينه شده
        public Boolean IsValidDate(String date)
        {
            if (!IsFullDate(date))
                date = FullDate(date);
            if (date.Length < 10)
                throw new InvalidDateException("تاریخ وارد شده معتبر نیست");
            int year = int.Parse(date.Substring(0, 4), CultureInfo.InvariantCulture);
            int month = int.Parse(date.Substring(5, 2), CultureInfo.InvariantCulture);
            int day = int.Parse(date.Substring(8, 2), CultureInfo.InvariantCulture);
            if (year < 0 || month > 12 || month < 0 || day < 0 || day > 31)
                return false;
            //if (month <= 6 && day > 31) مقايسه تكراري
            //    return false;
            if (month >= 7 && day > 30)
                return false;
            if (month == 12 && day > 29)
                if (!pcMydate.IsLeapYear(year))
                    return false;
                //else
                //    if (day > 30) مقايسه تكراري
                //        return false;
            return true;
        }البته اين باگ نيست، فقط اين تغييرات باعث بهينه شدن كد ميشه.

----------


## mvardin

سلام دوستان
دست آقای فرهانی درد نکنه ، یه سوال:
میشه کاری کرد که با استفاده از تاریخ شمسی مثلا 1387/03/11 روز هفته رو بدست آورد،یعنی بگه چندشنبست؟
ممنون میشم راهنماییم کنید ;)

----------


## mahdi_farhani

خوب بدش به تابع و dayname رو بگیر

----------


## mvardin

میشه بگید چجوری؟

----------


## razieh asadi

سلام و با تشکر
19 را نونزدهم گرفته اید.

----------


## hamidcha

با سلام
سورس کد تصحیح شده

----------


## mahdi_farhani

مشکلش چی بوده که تصحیح کردید ؟

----------


## mskarimi

جناب فراهانی اگه لطف کنین آخرین نسخه رو به انضمام تمام تغییرات به دو صورت کامپایل شده و سورس مجددا قرار بدید ممنون می شیم.
en|fa|T

----------


## samia1

ممنون از فایل مفیدی که اینجا گذاشتید.من نمی دونم از این کامپوننت رو چه طوری باید در یه وب سایت جواب بگیرم.. به فایل کلاسم اضافش کردم و در صفحه ای که می خوام ازاین کامپوننت استفاده کنم، این کد رو به قسمت سورسش اضافه می کنم:<%@ Register Assembly="FarhaniPersianDate" Namespace="Farhani.PersianDate" TagPrefix="custom" %>و موقع استفاده هم این کد رو می نویسم:<custom:FarhaniPersianDate ID="FarhaniPersianDate1" runat="server" />چه طوری ازش استفاده کنم؟

----------


## jaykob

سلام 

من به این شکل از این کلاس استفاده کردم اما روز رو یکی جلوتر نشان می ده به طور مثال امروز 24 هست در خروجی 25 نشان میده من به این شکل استفاده کردم :

             PerDate date = new PerDate();
            lblDateYear.Text = date.Year.ToString();
            lblDateMonth.Text = date.Month.ToString();
            lblDateDays.Text = date.Day.ToString();

----------


## ho_612

با تشکر از آقای فراهانی
ولی یه مشکلی وجود داره
تو سال 90 یه روز عقبه.

----------


## saeidfar

با سلام
دستتون درد نکنه
میشه بفرمایین چطوری میشه با داشتن تاریخ تولد یه نفر سنش رو بدست اورد البته با استفاده از این برنامه

----------


## mahdi_farhani

> با تشکر از آقای فراهانی
> ولی یه مشکلی وجود داره
> تو سال 90 یه روز عقبه.


 آخرین نسخه رو استفاده کنید ، الان تمام سیستم های من دارن از این استفاده میکنند و مشکل ندارند



> با سلام
> دستتون درد نکنه
> میشه بفرمایین چطوری میشه با داشتن تاریخ تولد یه نفر سنش رو بدست اورد البته با استفاده از این برنامه


تاریخ امروز منهای تاریخ تولد میشه سنش

----------


## saeidfar

> آخرین نسخه رو استفاده کنید ، الان تمام سیستم های من دارن از این استفاده میکنند و مشکل ندارند
> 
> تاریخ امروز منهای تاریخ تولد میشه سنش


ممنون من هنوز اینو که فرمودید امتحان نکردم! یعنی بدون نیاز به تبدیل دو تا تاریخ به عدد؟ متغیرهامون از چه نوعی باشن؟ خروجی چی میشه؟ من برا اینکار اختلاف دو تا تاریخ رو بدست آوردم با استفاده از توابع این برنامه سپس او رو به روز -ماه-سال تبدیل کردم فقط نمی دونم چند سال کبیسه بین دو تا تاریخ بوده که اونا رو حساب کنم؟
امتحان هم کردم نشد 2تا متغیر تاریخ گرفتم ارور داد دوتا textbox رو گذاشتم بازم ارور داد. میشه بیشتر راهنمایی بفرمایید. واقعا نمی دونم کجا رو اشتباه میکنم؟

----------


## saeidfar

هر موقع میخام چک کنم تاریخ درست وارد شده یا نه این اشکار رو میده 
{"تاریخ وارد شده معتبر نیست"}
تو برنامه از این دستور استفاده کردم:
 
Farhani.PersianDate.PerDate pd1 = new Farhani.PersianDate.PerDate();
pd1.SeparatorChar = '/';
if ((pd1.IsValidDate(textBox2.Text)))
{
MessageBox.Show("تاریخ درست است ");
}

مبشه راهنمایی بفرمایید

----------


## zahracomputer

سلام 
با تشکر فراوان از آقای فراهانی که زحمت کشیدند و این dll رو تهیه کردند.
من می خواستم با دادن یک تاریخ به برنامه متوجه بشم که چند شنبه بوده است. ولی dll با تاریخ جاری سیستم کار میکنه. چطور میشه تاریخ خاصی رو به اون ارسال کرد که با اون تاریخ کار کنه.
با تشکر

----------


## ho_612

[QUOTE=mahdi_farhani;1259399]آخرین نسخه رو استفاده کنید ، الان تمام سیستم های من دارن از این استفاده میکنند و مشکل ندارند

آخرین نسخه؟؟
همه رو دانلود کردم ولی مشکل پا برجاست.اگه امکانش هست یه لینک به عنوان آخرین نسخه بدید تا دانلود کنم.
مرسی

----------


## mmhf63

من آخرین نسخه رو گرفتم و کار هم میکنه بجز توابع مقایسه ای 
تو فایل Xml توضیحاتش رو دیدم ولی تو کلاس Cdate اصلا همچین متدهایی وجود نداره

----------


## si6arp

سلام دوستان .
من فکر کنم که این مشکل خیلی وقت پیش حل شده.
یه نمونه کامل براتون گزاشتم. همه چیز داره . حتی DatePicker و تبدیل عدد به حروف و  . . . . . 
امیدوارم خوشتون بیاد
+سورس برنامه

نکته : فقط در دات نت 3.5 قابل استفاده است

----------


## MOJTABAATEFEH

دوست عزیز دستورات برای تبدیل تاریخ ها چیه؟

با تشکر

----------


## MAHDIhp_devsq

سلام آقای فراهانی 
این د ال ال شما می تونه اختلاف ساعت را محاسبه کنه و ساعت سیستم را تنظیم کنه.

----------


## saeidfar

> سلام آقای فراهانی 
> این د ال ال شما می تونه اختلاف ساعت را محاسبه کنه و ساعت سیستم را تنظیم کنه.


 با سلام
نمي دونم اين برنامه اين كار رو انجام ميده يا نه!
اختلاف بين دو تاريخ شمسي رو ميتونيد ابتدا به ميلادي تبديل كنيد و سپس  براي بدست آوردن اختلاف از توابع تاريخ هم استفاده كنيد توابع .net براي  كار با تاريخ كامل هستن
ساعت سيستم رو كه خودتون با يه دستور ساده ميتونيد عوض كنيد نيازي به استفاده از اين برنامه نيست ديگه

----------


## abbas3zaar

آقا یکی بهم توضیح بده قدم به قدم.
من رفرنس رو اضافه کردم و farhaniPersianDate.dll به فوادر bin اضافه شد و در صفحه namespace رو هم اضافه کردم.
حالا یک لیبل دارم و میخوام تاریخ به این صورت در لیبیل نمایش داده بشه:

امروز سه شنبه 15 فروردین 1391 ، ساعت 02:19 قبل از ظهر

این چجوری انجام بدم کدش رو در C#‎‎ ؟؟؟

----------


## mahdi_farhani

سلام دوست عزیز ، جوابتون رو میتونید تو پست شماره 1 قسمت DisplayFormat ببینید.

----------


## mtzstar

با عرض سلام خدمت دوستان گرامی
میشه یه نمونه کد قرار بدین 
که فرضا تاریخ حال حاضر سیستم رو بگیره و 18 ماه ازش کم کنه
 طبق فرموده دوستمون آقای فرهانی که تو پست دوم  برای کم کردن ماه گفته بودن بنده از این دستور استفاده کردم
ولی نشد که بشه

  Farhani.PersianDate.PerDate perDat = new Farhani.PersianDate.PerDate();
               perDat.Today.ToString();
              perDat = perDat << 18;

----------


## mtzstar

سلام مجدد به دوستان
من جوابمو گرفتم البته به روش خودم واسه دوستانی  که ممکنه نیاز داشته باشن

 string str, s1, s2, s3,sn,sr;

            System.Globalization.PersianCalendar _pc = new System.Globalization.PersianCalendar();

            DateTime dt = System.DateTime.Today;
            System.Globalization.CultureInfo culture = new System.Globalization.CultureInfo("ja-JP"); 
            dr = con.Reader("select modat from modat_duty");
            if (dr.HasRows)
            {
                dr.Read();
                string x = dr["modat"].ToString();
                int x1=Convert.ToInt32(x);
                dt = dt.AddMonths(-x1);
                dt.ToShortDateString();
             sr=  dt.ToString("d", culture); 
                str = sr;
              //  MessageBox.Show(sr);
                s1 = str.Substring(0, 4);
                s2 = str.Substring(5, 2);
                s3 = str.Substring(8, 2);

                DateTime _userdate = new DateTime(int.Parse(s1), int.Parse(s2), int.Parse(s3));

                int PersianDay = _pc.GetDayOfMonth(_userdate);
                int PersianMonth = _pc.GetMonth(_userdate);
                int PersianYear = _pc.GetYear(_userdate);

                sn = string.Format("{0}/{1}/{2}", PersianYear, PersianMonth,PersianDay);
}

----------


## RAHA_AVA

> آقا یکی بهم توضیح بده قدم به قدم.
> من رفرنس رو اضافه کردم و farhaniPersianDate.dll به فوادر bin اضافه شد و در صفحه namespace رو هم اضافه کردم.
> حالا یک لیبل دارم و میخوام تاریخ به این صورت در لیبیل نمایش داده بشه:
> 
> امروز سه شنبه 15 فروردین 1391 ، ساعت 02:19 قبل از ظهر
> 
> این چجوری انجام بدم کدش رو در C#‎‎‎ ؟؟؟





> سلام دوست عزیز ، جوابتون رو میتونید تو پست شماره 1 قسمت DisplayFormat ببینید.



من هم همین کارو میخوام کنم  ولی نمیدونم از dll شما چه جوری استفاده کنم :ناراحت:

----------


## mortal6886

با سلام!
به چه صورت می توان  یک تاریخ شمسی به یک متغیر از این کلاس انتساب داد؟
برای مثال  دستورات زیر تاریخ رابه صورت میلادی به متغیر انتساب میدهد، اما اگر بخواهیم تاریخ  شمسی را به متغیر منتسب کنیم به چه صورت انجام می شود؟؟؟؟
 farhaniPersianDate.cDate perDate = new farhaniPersianDate.cDate();

 DateTime d = DateTime.Parse("2011 / 06 / 22");

            string s = perDate.getPersianDate(d);

----------


## mahdi_farhani

> با عرض سلام خدمت دوستان گرامی
> میشه یه نمونه کد قرار بدین 
> که فرضا تاریخ حال حاضر سیستم رو بگیره و 18 ماه ازش کم کنه
>  طبق فرموده دوستمون آقای فرهانی که تو پست دوم  برای کم کردن ماه گفته بودن بنده از این دستور استفاده کردم
> ولی نشد که بشه
> 
>   Farhani.PersianDate.PerDate perDat = new Farhani.PersianDate.PerDate();
>                perDat.Today.ToString();
>               perDat = perDat << 18;


 تقریباً درست نوشتید ولی احتمالا اشتباه استفاده کردی
Farhani.PersianDate.PerDate p = new Farhani.PersianDate.PerDate();
            p=p<<18;
string m=p.CurrentDate;

دیگه نباید از Today استفاده کنی ، چون تاریخ روز جاری رو بهت میده

----------


## mahdi_farhani

> من هم همین کارو میخوام کنم  ولی نمیدونم از dll شما چه جوری استفاده کنم


 
Farhani.PersianDate.PerDate p = new Farhani.PersianDate.PerDate();
            p.DisplyFormat = "امروز;dn;dd;mm;yy";
string d=string.Format("{0} ,ساعت {1}",p.GetPersianDate(),DateTime.Now.ToShortTimeSt  ring());

----------


## mahdi_farhani

از خاصیت CurrentDate استفاده کنید و تاریخ شمسی را انتساب بدید و بعد از آن حتماً تابع Calculte را فراخوانی کنید تا محاسبات مجدداً انجام شود
در ضمن آخرین نسخه به پست اول اضافه شد

----------


## saeidfar

با تشکر از آقای فراهانی عزیز بخاطر تهیه و پشتیبانی این محصول با ارزشی که در اختیار عموم قراردادند.
چندتا پیشنهاد داشتم خدمت آقای فراهانی:
1- اگه امکانش باشه فقط تو پست اول لینک آخرین ورژنها برای دانلود باشه و لینک دانلود از بقیه پست ها حذف بشه.
2- تو این چندسالی که این پست راه اندازی شده راهنمایی های زیادی انجام شده اگه امکان داشته باشه یه فایل راهنما بصورت ورد یا pdf کنار لینک دانلود قرارداده بشه بهتر کمک میکنه.
3- یه برنامه تهیه بشه که تمامی تابع های استفاده شده در این کلاس در اون استفاده بشه تا  کاربران بتونن از مثالهای اون استفاده کنن.
باز هم از آقای فراهانی تشکر ویژه دارم.
همیشه موفق و سربلند باشید

----------


## titrajh

سلام دوست عزیز واقعا دستت درد نکنه 

من یکجا بمشکل برخورد کردم یعنی نتونستم کدشو درست بنویسم اونم اینکه نمیتونم از تاریخ امروز مثلا 7 روز کم کنم اگر میشه یه راهنمایی بفرمائید بازم ممنونم

----------


## elena

اگه امکان داره یه نمونه بذارین،چون من تو استفاده از فایل DLL مشکل دارم اضافه میکنم ولی تو قسمت using نمیشناسه.ممنون

----------


## hobab-theme

> من یکجا بمشکل برخورد کردم یعنی نتونستم کدشو درست بنویسم اونم اینکه  نمیتونم از تاریخ امروز مثلا 7 روز کم کنم اگر میشه یه راهنمایی بفرمائید  بازم ممنونم


شما میتونید ابتدا تاریختون رو به 7روز عقبتر بکشید (DateTime.Now.AddDays(-7)) بعد از این کامپوننت استفاده کنید



> اگه امکان داره یه نمونه بذارین،چون من تو استفاده از فایل DLL مشکل دارم اضافه میکنم ولی تو قسمت using نمیشناسه.ممنون


مشکل خاصی نیست. روی پروژتون راست کلیک کنید و گزینه Add Reference رو بزنید. بعد از تب Browse این DLL رو انتخاب و OK کنید
الان میتونید از فضای نام Farhani.PersianDate استفاده کنید.
نمونه هم که جناب فراهانی تو پست اول زحمتش رو کشیدن. (و البته سایر پستها)

----------


## elena

من using Farhani.PersianDate; رو تو قسمت using وارد میکنم ولی نمتونم به کلاس preDate دسترسی داشته باشم،چرا؟

----------


## hobab-theme

کدتون رو بذارید تا ببینم چطور نوشتیدش

----------


## mohsen22

مثالهای ‍‍‍‍پست شمار 87 به نظر میاد مشکل برای باز شدن دارند دوستان دیگه به این نتیجه نرسیدند؟

----------


## elena

بله منم مشکل دارم باز نشد،همین کد آقای فرهانی رو وارد میکنم نمیشناسه
farhaniPersianDate.cDate perDate=new farhaniPersianDate.cDate();

----------


## hobab-theme

یه نمونه براتون گذاشتم. اونو اجرا کنید ببینید اجرا میشه یا نه. آخرین نسخه کامپوننت هم توش هست.

----------


## elena

> یه نمونه براتون گذاشتم. اونو اجرا کنید ببینید اجرا میشه یا نه. آخرین نسخه کامپوننت هم توش هست.


مشکل من حل شد،ممنون

----------


## farzadism

[QUOTE=mahdi_farhani;448450]نسخه 1.1 آماده شد 
با قابلیت تبدیل تاریخ شمسی به دیگر تاریخها و همچنین بلعکس
میلادی ، قمری ، عبری ، بودایی ، ژاپنی ، کره ای ، ...
( البته فکر نکنم زیاد به درد کسی بخوره )
---------------------------------------------------------------------------------------------
با تشکر فراوان از زحماتی که کشیده اید....
تبدیل تاریخ شمسی به میلادی رو لطفا توضیح بدهید یعنی عکس تابع زیر


pdate.GetPersianDate(string miladi);

----------


## mohammad5530

سلام

من با این کامپوننت مشکل دارم

الان تاریخ رو توی C#‎ کامل نشون میده ولی یک روز جلو هست

مثلا امروز چهار شنبه هست ولی میزنه پنجشنبه

لطفا منو راهنمایی کنید

----------


## fakhravari

> سلام
> من با این کامپوننت مشکل دارم
> الان تاریخ رو توی C#‎ کامل نشون میده ولی یک روز جلو هست
> مثلا امروز چهار شنبه هست ولی میزنه پنجشنبه
> لطفا منو راهنمایی کنید


 تاریخ سیستم درسته؟

----------


## hossein_sh2008

با سلام و تشکر

زمانی که با کد  زیر تاریخ رو چک می کنیم و مثلا تاریخ به صورت --/--/--13 (یعنی فراموش کردیم وارد کنیم)استفاده کنیم  با خطای خروج از برنامه رو به رو میشیم نه خطای چک کردن تاریخ آیا امکان درست کردن این مشکل وجود داره؟(یعنی این MessageBox.Show("تاریخ درست است "); اجرا نمیشه)


Farhani.PersianDate.PerDate pd1 = new Farhani.PersianDate.PerDate();
pd1.SeparatorChar = '/';
if ((pd1.IsValidDate(textBox2.Text)))
{
MessageBox.Show("تاریخ درست است ");
}





با تشکر

----------


## mohsen22

سلام . ضمن تشکر از همه 
من دو تاریخ و ساعت همزمان با هم دارم 
میخوام اختلاف روز و ساعت دقیق هر دو تاریخ رو محاسبه کنه
مثلا: اختلاف= 1 روز و 5 ساعت و 20 دقیقه 
لطفا بنده رو هم راهنمایی بفرمایید (ذکر یک مثال هم درvb کمک بزرگی به بنده میکنه )
مرسی
لازم به توضیحه که تاریخهای من شمسی هستش

----------


## hossein_sh2008

> سلام . ضمن تشکر از همه 
> من دو تاریخ و ساعت همزمان با هم دارم 
> میخوام اختلاف روز و ساعت دقیق هر دو تاریخ رو محاسبه کنه
> مثلا: اختلاف= 1 روز و 5 ساعت و 20 دقیقه 
> لطفا بنده رو هم راهنمایی بفرمایید (ذکر یک مثال هم درvb کمک بزرگی به بنده میکنه )
> مرسی
> لازم به توضیحه که تاریخهای من شمسی هستش


دوست عزيز يه سري به تاپيك زير بزن ان شا الله كارت ميشه

https://barnamenevis.org/showthread.p...B4%DB%8C%D8%AF

----------


## mohsen22

> دوست عزيز يه سري به تاپيك زير بزن ان شا الله كارت ميشه
> 
> https://barnamenevis.org/showthread.p...B4%DB%8C%D8%AF


اینکه لینک همین تاپیکه !؟

عزیزم اگه حل میشد که  دوباره اشاره نمی کردم

----------


## asp2.net

با سلام اقای فراهانی چطور میتونم تو گریدویو فیلدی که تاریخ میلادی هستش بصورت شمسی نشون بدم

----------


## MOHSEN1230

با سلام  
من میخواستم تعداد روز با textbox کم کنم نتونستام سورس کدی دارید براین کار...

----------

