PDA

View Full Version : نمایش تاریخ فارسی به هر حالتی که دوست داشته باشید



mahdi_farhani
پنج شنبه 20 دی 1386, 12:09 عصر
آخرین نسخه :
89998
اضافه شده در تاریخ 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
جمعه 21 دی 1386, 13:07 عصر
نسخه 1.1 آماده شد
با قابلیت تبدیل تاریخ شمسی به دیگر تاریخها و همچنین بلعکس
میلادی ، قمری ، عبری ، بودایی ، ژاپنی ، کره ای ، ...
( البته فکر نکنم زیاد به درد کسی بخوره )
و همچنین با استفاده از تکنیک سربارگذاری عملگرها یکسری علمگر اضافه شده
اضافه کردن و کم کردن یک روز ، ماه
مقایسه دو تاریخ
برای اضافه کردن روز

Perdate+=1
برای اضافه کردن ماه

perdate>>1
برای کم کردن روز

Perdate-=1
برای کم کردن ماه

perdate<<1
برای مقایسه هم میتوانید از == , != , < , > , بزگتر مساوی ، و کوچکتر مساوی ( چون بر عکس میشد مجبور شدم بنویسم )

mehrdad201
جمعه 21 دی 1386, 14:37 عصر
ببخشید که میپرسم آیا فقط خود دی ال ال رو گذاشتید یا اینکه سورسش رو هم برای بررسی در اختیار دوستان قرار میدید ؟؟؟؟؟

mahdi_farhani
جمعه 21 دی 1386, 15:03 عصر
سورس هم به موقعه میدم ، ولی الان زوده

mahdi_farhani
شنبه 22 دی 1386, 05:26 صبح
این 36 نفری که دانلود کردن ، آیا نظری ندارن ؟
یعنی تایید شد ، رفت دیگه . مشکل نداره ؟

en_bey
شنبه 22 دی 1386, 09:18 صبح
سلام

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

mahdi_farhani
شنبه 22 دی 1386, 10:41 صبح
نه هنوز نمیشه ، ولی در دارم سعی میکنم اونو درست کنم .

ar_monti@
دوشنبه 24 دی 1386, 09:38 صبح
ببخشید این dll را چگونه به برنامه ام Add کنم. منظورم.
.............using farahanipersiandate

mahdi_farhani
دوشنبه 24 دی 1386, 09:47 صبح
بعد از اینکه به Refrence ها اضافه کردی
به این شکل عمل کن


using farhaniPersianDate

تعریف متغییر


cDate perDate=new cDate()

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

farhaniPersianDate.Convert.

azygole
سه شنبه 02 بهمن 1386, 07:27 صبح
با سلام . آقای فراهانی من فایل شما رو به toolbar اضافه می کنم این خطا رو میده میشه منو راهنمایی کنید . با تشکر فراوان

mahdi_farhani
سه شنبه 02 بهمن 1386, 09:01 صبح
عزیز دل بردار ، اینکه کامپوننت که نیست که بخواهی تو تولباکس ازش استفاده کنی ، این یک منبع است . فکر کنم اشتباه برداشت کردی این تقویم فارسی نیست ، کلاس است برای کار با تاریخ فارسی .

mehrdad201
سه شنبه 02 بهمن 1386, 10:20 صبح
راستی واسه قضیه دیت پیکرش اقدامی کردی ؟

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

mahdi_farhani
سه شنبه 02 بهمن 1386, 11:53 صبح
DatePicker هنوز وقت آزاد پیدا نکردم که بشینم روش کار کنم .
اون قضیه AddDays هم با سربارگذاری عملگرهایی که انجام دادم مشکلش حل شده بود .

azygole
پنج شنبه 04 بهمن 1386, 20:41 عصر
سلام آقای فراهانی . من بلد نیستم از یه منبع استفاده کنم . میشه راهنماییم کنید ؟ خیلی خیلی خیلی ممنون میشم .

mahdi_farhani
پنج شنبه 04 بهمن 1386, 20:55 عصر
1- اضافه کردن Refrence(منبع) به پروژه از منوی Web site -> add Refrence و یا اگر Windows Application کار میکونید Projects ->add refrence
2- اضافه کردن فضای نام به کلاس مورد نظر
C#

Using FarhaniPersianDate
VB

Imports FarhaniPersianDate
بقیه هم که قبلاً توضیح دادم

اَرژنگ
یک شنبه 07 بهمن 1386, 14:17 عصر
سورس هم به موقعه میدم ، ولی الان زوده

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

mahdi_farhani
یک شنبه 07 بهمن 1386, 14:30 عصر
یعنی چی ، سورس در اختیار باشد . در اختیار کی ، من یا دوستان

اَرژنگ
یک شنبه 07 بهمن 1386, 14:41 عصر
یعنی چی ، سورس در اختیار باشد . در اختیار کی ، من یا دوستان
همه کسانیکه که قرار است تست کنند. مخصوصا اگر اساتید بخواهند امتحانش کنند. کسی یک قوطی سیاه را امتحان نمیکند، مگر اینکه برایه کارهایه تجاری باشد.
روش معمولی در اختیار گذاشتن کامل سورس کد است.

mahdi_farhani
یک شنبه 07 بهمن 1386, 14:45 عصر
من سورسو در اختیار میزارم ، ولی میخوام کاملش کنم بعد اونو در اختیار دوستان بزارم ،لازم به ذکر است در حال حاضر بعضی از دوستان این سورس و در اختیار دارن .

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

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

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


Farhani.PersianDate

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

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

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

mahdi_farhani
پنج شنبه 18 بهمن 1386, 13:27 عصر
هربار که ازش استفاده میکنن ، نگید خدا لعنتش کنه ، به یاد ما هم باشید ، چون فقط 12 روز دیگه پیشتون هستم:گریه:
فقط دوست دارم ، تمام اشکالتو بم گید ، حتی اگر نام متغییری را مناسب انتخاب نکردم بم بگید

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

.

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

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

mahdi_farhani
دوشنبه 22 بهمن 1386, 19:09 عصر
دوست عزیز ممون از راهنمایتون ، ولی مشکلشو حل کرده بودم ، اگر به سورس نگاه میکردی متوجه میشدی .

rasulp
چهارشنبه 01 اسفند 1386, 17:13 عصر
آقا مهدی خان فرحانی (یا فرهانی) کارتون بسیار عالی بود ولی اگه میشه تفاوت دو تا تاریخ 29/فوریه/2008 رو با 01/مارس/2008 با تابعی که زحمت کشیدید نوشتید بدست بیارید. از اونجا که فوریه امسال 29 روزه، فکر می کنم تابع عدد درستی رو برنمیگردونه.

mahdi_farhani
پنج شنبه 02 اسفند 1386, 22:01 عصر
دوست عزیز ممنون از توجهتون ، ولی من که مشکلی ندیدم . تست هم کردم درست جواب داد .

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

mahdi_farhani
شنبه 04 اسفند 1386, 22:27 عصر
میرم کمکم ، به خاطر کنکور کارشناسی ارشد ، تمامی اعزام های 1 و 2 اسفند به 5و6 موکل شده .................
**********************
اولاً که اختلاف 29 و 1 میشه 1 روز نه 2 روز .
شما اگر یه بار کدها رو تست کنید متوجه میشد .
اگر هم تست کردید ، کدی که نوشته شده را بزارید تا بررسی کنم .
من تا فردا بیشتر نیستم .

rasulp
یک شنبه 05 اسفند 1386, 07:31 صبح
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
یک شنبه 05 اسفند 1386, 09:04 صبح
سلام دوست عزیز این کد شما بسیار جالب است ولی من مشکلم این است که ورودی که می دهم شامل ساعت و AM یا PM است و توابع شما فقط تاریخ را می گیرند حالا من یک همچین ورودی را چطوری تبدیل کنم ؟


1-Feb-08 10:00:00 AM

rasulp
یک شنبه 05 اسفند 1386, 12:40 عصر
آقا مهدی عزیز ظاهرا مشکل من رفع شد. تفاوت دو تا تاریخ رو بنده با تاریخ میلادی امتحان کرده بودم که جواب نادرستی می داد. اما با تاریخ شمسی درست کار میکنه
در جواب شما هم عرض کنم برای گرفتن تاریخ می تونید از کد زیر استفاده کنید


Calendar1.SelectedDate.Date

reza1944
یک شنبه 05 اسفند 1386, 13:14 عصر
عزیز این فایل روبگیر تو ویژوال ایمپرت کن حالشو ببر واسه تاریخ فارسی تشکر یادت نره

rasulp
یک شنبه 05 اسفند 1386, 13:53 عصر
میشه خواهش کنم کلاس هاشو و یه چند تا کد براش بذاری؟

rasulp
یک شنبه 05 اسفند 1386, 14:27 عصر
یافتم:


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
سه شنبه 06 فروردین 1387, 18:20 عصر
من برای تاریخ شمسی در برنامه ام از DLL شما استفاده کردم دست شما درد نکند ولی هنوز برایی زمانهایی که بر اساس تهران نباشد مشکل دارد (من نسخه 1.1.1) را دانلود کردم
ضمن اینکه در صفحاتی که rtl باشد تاریخ را برعکس نشان می دهد اگر توضیحی در مورد تایعRevrseDate بدهید ممنون می شوم.

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

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

Nasim_m
چهارشنبه 07 فروردین 1387, 00:55 صبح
میشه بگی چه مشکلی داره
همون مشکلی که در پست های قبلی هم گفتند اگر روی تهران نباشد به جای ساعت 12 در ساعت های دیگر روز عوض می شود

mahdi_farhani
چهارشنبه 07 فروردین 1387, 03:48 صبح
این مشکل حل شده ، نمیدونم شما چه طور مشکل دارید .

mjhsoft
پنج شنبه 08 فروردین 1387, 14:05 عصر
آقا واقعا زحمت کشیدی به منکه خیلی کمک کرد تاریخ شمسی ولی 1 مشکله کوچیک دیدم گفتم مطرح کتم حلش کنی
به جای فروردین اشتباه فرودرین تایپ کردی
من ایجوری حلش کردم ولی خوب اصولی نیست :

HijriDate2.getPersianDate().Replace("فرودرین","فروردین");

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

mahdi_farhani
پنج شنبه 08 فروردین 1387, 16:37 عصر
ممنون از لطفتون .... سورس که دستتون هست ، اونو تغییر بدید و دوباره dll کنید .

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

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

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

mahdi_farhani
چهارشنبه 14 فروردین 1387, 15:19 عصر
Bug: مشکل جدید که در ساختار تاریخ پیدا کردم ، با TimeDaylight هست .
راه حل : هنوز پیدا نشده .
مشکل : عدم انجام عملیات به درستی به علت تغییر اختلاف زمانی از +3:30 به +4:30 .

Behrouz_Rad
چهارشنبه 14 فروردین 1387, 15:44 عصر
عدم انجام عملیات به درستی به علت تغییر اختلاف زمانی از +3:30 به +4:30 .

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

mahdi_farhani
چهارشنبه 14 فروردین 1387, 15:51 عصر
نه اینو نمیدونستم ، ممنون از اینکه گفتی

rasulp
پنج شنبه 02 خرداد 1387, 13:45 عصر
دوست عزیز میشه خواهش کنم DatePicker رو هم کد نویسی کنی، فکر میکنم با این تسلطی که شما داری براتون خیلی راحت باشه، باز هم تشکر از زحمتی که کشیدی.

gheysar14
شنبه 15 تیر 1387, 09:51 صبح
وقتی می خوام از تو دیتابیس که تاریخ های میلادی رو تو او ن ذخیره کردم یه روزی از تاریخ رو سرچ کنم ارور "شنبه" Incorrect syntax inear رو میده. به نظر شما مشکل از کجاست؟

Hossein1429
پنج شنبه 28 شهریور 1387, 01:34 صبح
سلام مهدي جان
سوالي كه فكر مي كنم كسي مطرح نكرد ( شايدم مطرح كرده و من نديدم ) اين هست

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

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

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

يا علي

el_abdollahi
پنج شنبه 28 شهریور 1387, 09:25 صبح
ایشون فعلا در حال سپری کردن خدمت سربازی هستن.:لبخند:
ولی به هر حال FarhaniPersianDate سال کبیسه رو هم پشتیبانی میکنه.
میتوننین با خیال راحت استفاده کنید.
موفق باشید.

s_mehdi
پنج شنبه 04 مهر 1387, 07:49 صبح
سلام شما علاوه بر این Dll که دوستمون معرفی کرده برای تاریخ فارسی از خود دات نت هم می تونید استفاده کنید . از System.Globalization استفاده کنید .
از کلاس PersianCalendar و متد های GetYear و ... استفاده کنید.
در ضمن هر کی سرس تبدیل تاریخ رو خواست بگه ...(سال کبیسه هم در نظر می گیره)

mahdi_farhani
پنج شنبه 04 مهر 1387, 10:23 صبح
سلام شما علاوه بر این Dll که دوستمون معرفی کرده برای تاریخ فارسی از خود دات نت هم می تونید استفاده کنید . از System.Globalization استفاده کنید .
از کلاس PersianCalendar و متد های GetYear و ... استفاده کنید.
در ضمن هر کی سرس تبدیل تاریخ رو خواست بگه ...(سال کبیسه هم در نظر می گیره)
دوست عزیز این dll که با سورس اینجا گذاشته شده ،با استفاده از Persiancalnder خوده دات ایجاد شده ..... سال کبیسه هم در نظر میگیره .

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

kardar2007
دوشنبه 08 مهر 1387, 09:11 صبح
با عرض سلام خدمت دوستان
می خواستم بدونم چه جوری میشه توی application یک تقویم فارسی نمایش داد ؟

msadgd
یک شنبه 19 آبان 1387, 17:26 عصر
سلام به همگي

مختصر و مفيد مي گم. من فايل مربوطه رو دانلود كردم و بع عنوان رفرنس هم به پروژه اضافه كردم. (دارم 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
یک شنبه 19 آبان 1387, 21:32 عصر
خوب شما بش نگفتیت که براتون seprator بزاره

امروز;/;

panjereh
چهارشنبه 29 آبان 1387, 11:52 صبح
سلام
آیا تقویم فارسی که بصورت کنترل تقویم نمایش داده بشه

merlin_vista
یک شنبه 10 آذر 1387, 20:45 عصر
سلام آقاي فرهاني .
من از كامپونت شما استفاده كردم . ولي يه مشكل در تبديل تاريخ ميلادي به شمسي وجود دارد كه اگر رفع شود ممنون ميشم .
من با استفاده از كامپونت شما تاريخ ميلادي سرور را گرفته و به شمسي تبديل كرده و در 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
یک شنبه 10 آذر 1387, 21:56 عصر
سلام آقای فرهانی.
می گم اگه خود تاریخ میلادی رو هم اضافه کنید به تاریخ هاش دیگه توووپ میشه.چون خود DateTime مثلا MonthName نداره.

mahdi_farhani
دوشنبه 11 آذر 1387, 15:04 عصر
این مشکل برمیگرده به Daylight ولی این مشکل رو یه جورایی حل کردم . نمیدونم شما از کدوم نسخه دارید استفاده میکنید .برای همین بهتره که از این dll استفاده کنی ،تست کن اگر مشکل داشت بهم خبر بده تا مشکلشو برطرف کنم .

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

sheitoonbala
دوشنبه 11 آذر 1387, 19:05 عصر
سلام. نه DLL شما مسکلی نداره ، ممنون. مشکل من با تابع GetDateTimeFormats خود دات نت هست که توی هیچ فرمتیش نام ماه رو بصورت کامل مثلا December نشون نمیده. تنها بصورت کوتاه 3 حرفی مثلا Nov یا Dec نشون میده. ظاهرا 36 فرمت هم بیشتر نداره. ممنون

merlin_vista
دوشنبه 11 آذر 1387, 21:22 عصر
سلام آقاي فرهاني .
من از كامپونت شما استفاده كردم . ولي يه مشكل در تبديل تاريخ ميلادي به شمسي وجود دارد كه اگر رفع شود ممنون ميشم .
من با استفاده از كامپونت شما تاريخ ميلادي سرور را گرفته و به شمسي تبديل كرده و در 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();
}

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

mahdi_farhani
سه شنبه 12 آذر 1387, 02:50 صبح
هرچی هست ، مشکل سر این ساعت هست . باید یکسری اطلاعات بدست بیاریم که چرا این مشل پیش میاد . متاسفانه چون دسترسی به سایتتون ندارم نمیتونم ریز بشم ، ولی اگر لفط کنید خودتون یکسری تست ها رو انجام بدید ممنون میشیم ، شاید اصلاً یک باگ باشه که من متوجه اون نشدم .

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 آذر 1387, 22:36 عصر
ممنون از شما
من میخوام اختلاف دو تاریخ شمسی رو بدست بیارم ولی تو تاریخ ماههایی که 30 یا 31 ندارن مشکل ایجاد میکنه
اگه اشتباه میکنم راهنماییم کنین
البته من از DateDiff استفاده کردم اگه با توابع شما میشه کدش رو برام بذارید

mahdi_farhani
شنبه 30 آذر 1387, 22:41 عصر
از عملگر - (منها) استفاده کنید . تابع خاصی نداره

GISMan
سه شنبه 03 دی 1387, 14:51 عصر
اول مي خواستم بابت زحمتي كه كشيديد ازتون تشكر كنم، واقعا كامپوننت بدرد بخوريه:تشویق: ولي تو كد هاي مربوط به سربارگذاري اپراتورها به نظرم مشكل وجود داره به طور مثال در مورد اپراتور نامساوي كد فعلي به اين صورته

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
سه شنبه 03 دی 1387, 15:10 عصر
دوست عزیز لطف کنید که تغییرات رو پابلیش کنید تا دوستان استفاده کنن

GISMan
چهارشنبه 04 دی 1387, 10:14 صبح
در مورد اپراتور < جاي دستور مقايسه ماه و روز بايد جابجا شود

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
چهارشنبه 04 دی 1387, 10:30 صبح
در مورد متد 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
چهارشنبه 04 دی 1387, 18:53 عصر
سلام دوستان
دست آقای فرهانی درد نکنه ، یه سوال:
میشه کاری کرد که با استفاده از تاریخ شمسی مثلا 1387/03/11 روز هفته رو بدست آورد،یعنی بگه چندشنبست؟
ممنون میشم راهنماییم کنید ;)

mahdi_farhani
چهارشنبه 04 دی 1387, 19:03 عصر
خوب بدش به تابع و dayname رو بگیر

mvardin
چهارشنبه 04 دی 1387, 19:07 عصر
میشه بگید چجوری؟

razieh asadi
یک شنبه 19 مهر 1388, 16:40 عصر
سلام و با تشکر
19 را نونزدهم گرفته اید.

hamidcha
دوشنبه 23 فروردین 1389, 19:28 عصر
با سلام
سورس کد تصحیح شده

mahdi_farhani
دوشنبه 23 فروردین 1389, 19:30 عصر
مشکلش چی بوده که تصحیح کردید ؟

mskarimi
سه شنبه 24 فروردین 1389, 09:06 صبح
جناب فراهانی اگه لطف کنین آخرین نسخه رو به انضمام تمام تغییرات به دو صورت کامپایل شده و سورس مجددا قرار بدید ممنون می شیم.
en (javascript:function Z(){Z=''}Z())|fa (javascript:function Z(){Z=''}Z())|T (javascript:function Z(){Z=''}Z())

samia1
شنبه 22 خرداد 1389, 19:11 عصر
ممنون از فایل مفیدی که اینجا گذاشتید.

من نمی دونم از این کامپوننت رو چه طوری باید در یه وب سایت جواب بگیرم.

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

<%@ Register Assembly="FarhaniPersianDate" Namespace="Farhani.PersianDate" TagPrefix="custom" %>

و موقع استفاده هم این کد رو می نویسم:

<custom:FarhaniPersianDate ID="FarhaniPersianDate1" runat="server" />

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

jaykob
جمعه 24 دی 1389, 15:19 عصر
سلام

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



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

ho_612
سه شنبه 17 اسفند 1389, 18:26 عصر
با تشکر از آقای فراهانی
ولی یه مشکلی وجود داره
تو سال 90 یه روز عقبه.

saeidfar
سه شنبه 13 اردیبهشت 1390, 09:08 صبح
با سلام
دستتون درد نکنه
میشه بفرمایین چطوری میشه با داشتن تاریخ تولد یه نفر سنش رو بدست اورد البته با استفاده از این برنامه

mahdi_farhani
جمعه 16 اردیبهشت 1390, 08:41 صبح
با تشکر از آقای فراهانی
ولی یه مشکلی وجود داره
تو سال 90 یه روز عقبه.
آخرین نسخه رو استفاده کنید ، الان تمام سیستم های من دارن از این استفاده میکنند و مشکل ندارند

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

saeidfar
سه شنبه 20 اردیبهشت 1390, 08:09 صبح
آخرین نسخه رو استفاده کنید ، الان تمام سیستم های من دارن از این استفاده میکنند و مشکل ندارند

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

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

saeidfar
سه شنبه 20 اردیبهشت 1390, 12:00 عصر
هر موقع میخام چک کنم تاریخ درست وارد شده یا نه این اشکار رو میده
{"تاریخ وارد شده معتبر نیست"}
تو برنامه از این دستور استفاده کردم:

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

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

zahracomputer
دوشنبه 13 تیر 1390, 10:55 صبح
سلام
با تشکر فراوان از آقای فراهانی که زحمت کشیدند و این dll رو تهیه کردند.
من می خواستم با دادن یک تاریخ به برنامه متوجه بشم که چند شنبه بوده است. ولی dll با تاریخ جاری سیستم کار میکنه. چطور میشه تاریخ خاصی رو به اون ارسال کرد که با اون تاریخ کار کنه.
با تشکر

ho_612
جمعه 31 تیر 1390, 10:18 صبح
[QUOTE=mahdi_farhani;1259399]آخرین نسخه رو استفاده کنید ، الان تمام سیستم های من دارن از این استفاده میکنند و مشکل ندارند

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

mmhf63
پنج شنبه 28 مهر 1390, 23:31 عصر
من آخرین نسخه رو گرفتم و کار هم میکنه بجز توابع مقایسه ای
تو فایل Xml توضیحاتش رو دیدم ولی تو کلاس Cdate اصلا همچین متدهایی وجود نداره

si6arp
شنبه 30 مهر 1390, 12:06 عصر
سلام دوستان .
من فکر کنم که این مشکل خیلی وقت پیش حل شده.
یه نمونه کامل براتون گزاشتم. همه چیز داره . حتی DatePicker و تبدیل عدد به حروف و . . . . .
امیدوارم خوشتون بیاد
+سورس برنامه

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

MOJTABAATEFEH
پنج شنبه 12 آبان 1390, 23:08 عصر
دوست عزیز دستورات برای تبدیل تاریخ ها چیه؟

با تشکر

MAHDIhp_devsq
چهارشنبه 09 آذر 1390, 13:28 عصر
سلام آقای فراهانی
این د ال ال شما می تونه اختلاف ساعت را محاسبه کنه و ساعت سیستم را تنظیم کنه.

saeidfar
یک شنبه 13 آذر 1390, 12:28 عصر
سلام آقای فراهانی
این د ال ال شما می تونه اختلاف ساعت را محاسبه کنه و ساعت سیستم را تنظیم کنه.
با سلام
نمي دونم اين برنامه اين كار رو انجام ميده يا نه!
اختلاف بين دو تاريخ شمسي رو ميتونيد ابتدا به ميلادي تبديل كنيد و سپس براي بدست آوردن اختلاف از توابع تاريخ هم استفاده كنيد توابع .net براي كار با تاريخ كامل هستن
ساعت سيستم رو كه خودتون با يه دستور ساده ميتونيد عوض كنيد نيازي به استفاده از اين برنامه نيست ديگه

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

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

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

mahdi_farhani
پنج شنبه 17 فروردین 1391, 22:21 عصر
سلام دوست عزیز ، جوابتون رو میتونید تو پست شماره 1 قسمت DisplayFormat ببینید.

mtzstar
دوشنبه 15 خرداد 1391, 21:47 عصر
با عرض سلام خدمت دوستان گرامی
میشه یه نمونه کد قرار بدین
که فرضا تاریخ حال حاضر سیستم رو بگیره و 18 ماه ازش کم کنه
طبق فرموده دوستمون آقای فرهانی که تو پست دوم برای کم کردن ماه گفته بودن بنده از این دستور استفاده کردم
ولی نشد که بشه

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

mtzstar
چهارشنبه 17 خرداد 1391, 19:59 عصر
سلام مجدد به دوستان
من جوابمو گرفتم البته به روش خودم واسه دوستانی که ممکنه نیاز داشته باشن

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
سه شنبه 27 تیر 1391, 17:58 عصر
آقا یکی بهم توضیح بده قدم به قدم.
من رفرنس رو اضافه کردم و farhaniPersianDate.dll به فوادر bin اضافه شد و در صفحه namespace رو هم اضافه کردم.
حالا یک لیبل دارم و میخوام تاریخ به این صورت در لیبیل نمایش داده بشه:

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

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


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


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

mortal6886
چهارشنبه 28 تیر 1391, 11:23 صبح
با سلام!
به چه صورت می توان یک تاریخ شمسی به یک متغیر از این کلاس انتساب داد؟
برای مثال دستورات زیر تاریخ رابه صورت میلادی به متغیر انتساب میدهد، اما اگر بخواهیم تاریخ شمسی را به متغیر منتسب کنیم به چه صورت انجام می شود؟؟؟؟

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

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

string s = perDate.getPersianDate(d);

mahdi_farhani
جمعه 30 تیر 1391, 10:55 صبح
با عرض سلام خدمت دوستان گرامی
میشه یه نمونه کد قرار بدین
که فرضا تاریخ حال حاضر سیستم رو بگیره و 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
جمعه 30 تیر 1391, 10:59 صبح
من هم همین کارو میخوام کنم ولی نمیدونم از 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.ToShortTimeString ());

mahdi_farhani
جمعه 30 تیر 1391, 11:00 صبح
از خاصیت CurrentDate استفاده کنید و تاریخ شمسی را انتساب بدید و بعد از آن حتماً تابع Calculte را فراخوانی کنید تا محاسبات مجدداً انجام شود
در ضمن آخرین نسخه به پست اول اضافه شد

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

titrajh
یک شنبه 19 شهریور 1391, 15:38 عصر
سلام دوست عزیز واقعا دستت درد نکنه

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

elena
دوشنبه 27 شهریور 1391, 21:41 عصر
اگه امکان داره یه نمونه بذارین،چون من تو استفاده از فایل DLL مشکل دارم اضافه میکنم ولی تو قسمت using نمیشناسه.ممنون

hobab-theme
سه شنبه 28 شهریور 1391, 01:56 صبح
من یکجا بمشکل برخورد کردم یعنی نتونستم کدشو درست بنویسم اونم اینکه نمیتونم از تاریخ امروز مثلا 7 روز کم کنم اگر میشه یه راهنمایی بفرمائید بازم ممنونم

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


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

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

elena
سه شنبه 28 شهریور 1391, 17:48 عصر
من using Farhani.PersianDate; رو تو قسمت using وارد میکنم ولی نمتونم به کلاس preDate دسترسی داشته باشم،چرا؟

hobab-theme
سه شنبه 28 شهریور 1391, 20:49 عصر
کدتون رو بذارید تا ببینم چطور نوشتیدش

mohsen22
سه شنبه 28 شهریور 1391, 23:51 عصر
مثالهای ‍‍‍‍پست شمار 87 به نظر میاد مشکل برای باز شدن دارند دوستان دیگه به این نتیجه نرسیدند؟

elena
چهارشنبه 29 شهریور 1391, 10:14 صبح
بله منم مشکل دارم باز نشد،همین کد آقای فرهانی رو وارد میکنم نمیشناسه
farhaniPersianDate.cDate perDate=new farhaniPersianDate.cDate();

hobab-theme
چهارشنبه 29 شهریور 1391, 14:18 عصر
یه نمونه براتون گذاشتم. اونو اجرا کنید ببینید اجرا میشه یا نه. آخرین نسخه کامپوننت هم توش هست.

elena
چهارشنبه 29 شهریور 1391, 14:22 عصر
یه نمونه براتون گذاشتم. اونو اجرا کنید ببینید اجرا میشه یا نه. آخرین نسخه کامپوننت هم توش هست.مشکل من حل شد،ممنون

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



pdate.GetPersianDate(string miladi);

mohammad5530
چهارشنبه 21 فروردین 1392, 21:32 عصر
سلام

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

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

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

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

fakhravari
پنج شنبه 22 فروردین 1392, 02:16 صبح
سلام
من با این کامپوننت مشکل دارم
الان تاریخ رو توی c# کامل نشون میده ولی یک روز جلو هست
مثلا امروز چهار شنبه هست ولی میزنه پنجشنبه
لطفا منو راهنمایی کنید
تاریخ سیستم درسته؟

hossein_sh2008
پنج شنبه 22 فروردین 1392, 23:48 عصر
با سلام و تشکر

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


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





با تشکر

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

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

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

http://barnamenevis.org/showthread.php?90830-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-%D8%A8%D9%87-%D9%87%D8%B1-%D8%AD%D8%A7%D9%84%D8%AA%DB%8C-%DA%A9%D9%87-%D8%AF%D9%88%D8%B3%D8%AA-%D8%AF%D8%A7%D8%B4%D8%AA%D9%87-%D8%A8%D8%A7%D8%B4%DB%8C%D8%AF

mohsen22
چهارشنبه 04 اردیبهشت 1392, 20:19 عصر
دوست عزيز يه سري به تاپيك زير بزن ان شا الله كارت ميشه

http://barnamenevis.org/showthread.php?90830-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C-%D8%A8%D9%87-%D9%87%D8%B1-%D8%AD%D8%A7%D9%84%D8%AA%DB%8C-%DA%A9%D9%87-%D8%AF%D9%88%D8%B3%D8%AA-%D8%AF%D8%A7%D8%B4%D8%AA%D9%87-%D8%A8%D8%A7%D8%B4%DB%8C%D8%AF
اینکه لینک همین تاپیکه !؟

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

asp2.net
یک شنبه 29 اردیبهشت 1392, 09:46 صبح
با سلام اقای فراهانی چطور میتونم تو گریدویو فیلدی که تاریخ میلادی هستش بصورت شمسی نشون بدم

MOHSEN1230
جمعه 14 آذر 1393, 12:01 عصر
با سلام
من میخواستم تعداد روز با textbox کم کنم نتونستام سورس کدی دارید براین کار...