PDA

View Full Version : سوال: تقويم فارسي



EffatBandehlou
سه شنبه 13 اسفند 1387, 12:16 عصر
دوستان سلام
تو c# 2008 ميشه تقويمو شمسي كرد يا شمسي نشون داد و البته تو بانك اطلاعاتي هم شمسي ثبت كرد؟

rnm123
سه شنبه 13 اسفند 1387, 14:45 عصر
چرا از کلاس PersianCalender خود C# استفاده نمیکنید هم میتوانید تقویم فارسی داشته باشید و هم اینکه موقع خواندن تاریخ ار پایگاه داده میتوانید آنرا به فارسی تبدیل کنید البته ذخیره تاریخ فارسی در sql امکان ندارد چون خود sqlقبول نمیکند

EffatBandehlou
سه شنبه 13 اسفند 1387, 15:35 عصر
ميشه يه كم واضحتر بگيد كه دقيقاً بايد چيكار كنم؟

mohsen306
سه شنبه 13 اسفند 1387, 17:01 عصر
با سلام:
یعنی اینطوری تعریف میکنی
System.Globalization.PersianCalendar prDate = new System.Globalization.PersianCalendar();
اینطوری هم استفاده میکنی
year = prDate.GetYear(DateTime.Now);
month = prDate.GetMonth(DateTime.Now);
day = prDate.GetDayOfMonth(DateTime.Now);
strdate=year+"/"+month+"/"+day;

rnm123
سه شنبه 13 اسفند 1387, 17:50 عصر
دوستمان آقای mohsen306 بسیار خوب توضیح دادند . با متغیر فوق که تعریف کردی میتوانی خیلی راحت تاریخ شمسی را از کاربر گرفته و آنرا به صورت یک رشته به متغیر فوق داده و معادل میلادی آنرا جهت ذخیره در پایگاه داده بدست آوری و برعکس تاریخ را که از پایگاه داده خواندی به این متغیر بده و معادل فارسی آنرا به دست آور و نمایش بده

EffatBandehlou
چهارشنبه 14 اسفند 1387, 11:21 صبح
ممنون از توضيحاتتون.
اما الان كه دارم كار مي كنم مي بينم كه خيلي سخته كه بخوام كاربر خودش بدون اشتباه تاريخ رو درست وارد كنه.اگه از كنترل تاريخ استفاده نكنم و فقط از يه text معمولي كمك بگيرم كه حتي امكان mask هم نداره كار خيلي سخت ميشه .
لطفاً راهنمائيم كنيد

mohsen306
چهارشنبه 14 اسفند 1387, 14:50 عصر
خوب بگو چی میخوای؟
چه کاری رو تاریخ میخوای انجام بدی تا بگم

EffatBandehlou
چهارشنبه 14 اسفند 1387, 15:20 عصر
يه فرم ورود اطلاعات دارم.
كه بايد كاربر تاريخ رو از طريق يك كنترل وارد كنه.
حالا بعدش از طريق مواردي دوستان كه در بالا گفتند ثبت كرده و دوباره لود مي كنم.
اما از چه كنترلي براي ورود اطلاعات استفاده كنم.
تو گريد چيكار كنم؟؟؟

kablayi
چهارشنبه 14 اسفند 1387, 15:28 عصر
از سه تا combobox استفاده کنید .... یکی برای روز که تا 31 مقدار دهی شده دومی تا12 مقدار دهی کنید و سومس رو هم میتونید تا صد یا دویست سال قبل و بعد مقداردهی کنید ...
بعد مقدار هر سه رو پشت سر هم بچسپنید ...

EffatBandehlou
چهارشنبه 14 اسفند 1387, 15:33 عصر
ممنون.براي نمايشش تو گريد چيكار كنم؟؟؟؟

rnm123
چهارشنبه 14 اسفند 1387, 19:55 عصر
دوست عزیز ببینید برای اینکار میتوانید سه تکس باکس تعریف کنید یکی برای سال یکی برای ماه و یکی برای روز . وقتی کاربر کلید ورود را زد اول کنترل کنید که این تکی باکسها خالی نباشند اگر بودند بک پیغام مناسب با messageBox نمایش دهید بعد از کد زیر برای کنترل صحیح بودن مقادیر وارد شده استفاده نمائید
;()datetime Dt = new datetime
;()PersianCalendar Percal = new PersianCalendar
try
}
Dt = Percal.ToDateTime(int.Parse(Text1.text), int.Parse(Text2.text), int.Parse(Text3.text,0,0,0,0
}
catch
{
;(messagebox.show("ERRor"
}
کد فوق مقادیر ورودی را به عدد تبذیل کرده و انها را به عنوان ÷ارامتر روودی به تابع تاریخ شمسی ارسال میکند حال اگر در عملیات تبدیل به عدد و یا نمونه سازی تاریخ ایرادی حاصل شود نشان دهنده این است که کاربر عدد نامعتبر وارد کرده که میتوانید در قسمت catch به راحتی آنرا کنترل کنید و کاربر را به وارد نمودن مجدد اطلاعات مجبور نمائید