PDA

View Full Version : سوال: تاریخ شمسی با قابلیت کم و زیاد کردن تاریخ



mehran63
چهارشنبه 01 آذر 1391, 10:18 صبح
سلام
دنبال یه کلاس برای تاریخ شمسی میگردم که این قابلیت رو هم داشته باشه که بتونم تاریخ رو جلو یا عقب ببرم
برای مثال کاربر در تاریخ امروز ثبت نام میکنه و مثلا زمان اعتبار برای این کاربر 2 ماه است. پس من باید هم تاریخ امروز رو تو بانک ثبت کنم هم تاریخ 2 ماه دیگه رو تو بانک ثبت کنم. میخوام کلاسی باشه که متد اضافه کردن به تاریخ رو داشته باشه
اگه قابلیت زیر رو هم داشته باشه که عالیست
دو تاریخ فارسی را به آن میدهید و اختلاف این دو تاریخ را به صورت یک عدد دریافت میکنید.

sanay_esh
چهارشنبه 01 آذر 1391, 11:10 صبح
سلام دوست عزیز
با توجه به تکرار پاسخ سوال شما در همین تالار کمی جستجوی خود را دقیق تر انجام دهید و به پاسخهای ارزشمندی

همچون این تاپیک (http://barnamenevis.org/showthread.php?281309-%D8%AA%D9%82%D9%88%DB%8C%D9%85-%D8%B4%D9%85%D8%B3%DB%8C-%28Persian-Calendar%29-%D8%AF%D8%B1-%D9%88%DB%8C%DA%98%D9%88%D8%A7%D9%84-%D8%A7%D8%B3%D8%AA%D9%88%D8%AF%DB%8C%D9%88-2010-%28vs-2010-visual-studio-2010%29&p=1606686#post1606686)و ... برسید

با تشکر از شما

mehran63
چهارشنبه 01 آذر 1391, 11:41 صبح
متشکرم اون تایپیک رو دیدم ولی قابلیت کم و زیاد کردن تاریخ رو که در بالا بهش اشاره کرده بودم رو ندیدم بهش اشاره شده باشه. همچنین دو تاریخ فارسی را به آن میدهید و اختلاف این دو تاریخ را به صورت یک عدد دریافت میکنید.
البته فعلا مسئله مهمتر برای من قابلیت کم و زیاد کردن تاریخ است، مثلا اضافه کردن 3 ماه به تاریخ امروز
اگر راهنمایی کنید ممنون میشوم

sanay_esh
چهارشنبه 01 آذر 1391, 11:52 صبح
خوب طبق راهنمایی که در تاپیک شده تمامی کارهایی را که شما میتوانید با DateTime انجام دهید را پشتیبانی میکند

شما یک کلاس ایجاد کنید و موارد ذکر شده را در کلاس درج نمایید

بعد اگر به مشکلی برخوردید و نتوانستید مسئله رو حل کنید در خدمت شما هستیم انشالله

hashemi85sep
چهارشنبه 01 آذر 1391, 13:13 عصر
با سلام
دوست عزیز mehran63
شما دیگه باید اختلاف بین تاریخ ها رو خودتون با استفاده از کد نویسی بدست بیارید
دیگه نباید منتظر لقمه آماده باشید
یکمی از کار رو هم خودتون انجام بدین ...

sanay_esh
چهارشنبه 01 آذر 1391, 14:11 عصر
نه دوست عزیز نیازی نیست که خودش حساب کنه

مگر شما در قسمت DateTime دات نت نیازی به این جور کارها دارید

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

پروژه آماده هم ندارم که براتون بذارم تا استفاده کنید

استفاده از یک کلاس که اینقدر پیچیدگی نداره !!!!

mehran63
چهارشنبه 01 آذر 1391, 16:31 عصر
متشکرم دوست عزیز
من از این روش شما استفاده کردم و به خوبی هم کار میکنه، بسیار برنامه کارآمدی هست
از متد Addmounth برای اضافه کردن به ماه استفاده کردم

PersianCulture me = new PersianCulture();
string mydate= me.Calendar.AddMonths(DateTime.Now, 2).ToShortDateString();
ولبی حالا چند نکته دیگر هم هست اگر راهنمایی فمایید ممنون میشوم.
1- هر چه گشتم تا با این کلاس بتوانم تاریخ کنونی سیستم را بگیرم و به فرمت شمسی تبدیل کنم چیزی پیدا نکردم (DateTime.Now)
2- اگر دو تاریخ را با هم بخواهیم مقایسه کنیم چه باید کرد به عنوان مثال
if(d1>d2){

}
3- چه طور میتوانم اختلاف بین دو تاریخ را پیدا کنم ؟
4- چه طور در حلقه For میتونم بگم از این تاریخ تا این تاریخ ؟
مسئلهای که شاید لازم به گفتن باشد این است که تاریخ را باید با فرمت .ToShortDateString() ذخیره کنم که در کلاس عنوان شده به فرمت yyyy/mm/dd است یعنی از نوع string
اگه میشه بگید از کدوم متد استفاده کنم. تو سایت MSDN هم گشتم چیزی در این رابطه ندیدم
Calendar Class (http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.calendar(v=vs.80).aspx)
Calendar Methods (http://msdn.microsoft.com/en-US/library/system.web.ui.webcontrols.calendar_methods(v=vs.80 ).aspx)

saeed_sho
چهارشنبه 01 آذر 1391, 17:23 عصر
datetime.now.month.add(3).tostring()

mehran63
چهارشنبه 01 آذر 1391, 19:03 عصر
datetime.now.month.add(3).tostring()
این مشکلم حل شده با کلاسی که دوست عزیزمون sanay_esh گذاشتن و کدی که در بالا گذاشتم
ولی سوالات تایپیک 7 باقی است

sanay_esh
چهارشنبه 01 آذر 1391, 19:35 عصر
ببینید شما میتوانید از تمامی امکانات کتابخانه Date Time استفاده کنید ( چندین بار عرض کردم )

حال اگر تنظیمات شما در Global.asax درست انجام شده باشد هر موقع تاریخ را با تابع DateTime.Now() فراخوانی کنید به شما تاریخ شمسی الان را میدهد

اگر بخواهید دو تاریخ را با هم مقایسه کنید باید هر دو نوع از نوع date time باشد و انوقت میتوانید از عملگرهای مقایسه ای هم استفاده کنید

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

استفاده از از تاریخ در حلقه for یا باید با نوع خود زمان باشد یا باید ابتدا اختلاف آنها را طبق سوال 2 گرفته و بعد بصورت عددی for بزنید

در آخر دوباره عرض میکنم که تمامی عملیاتی که شما میتوانید با Date Time دات نت انجام دهید میتوانید با این هم انجام دهید پ

mehran63
چهارشنبه 01 آذر 1391, 20:07 عصر
احتمالا باید تنظیمات درست باشد که داره کار میکنه
ولی عرض من این است که وقتی مثلا من کلاس رو به شکل زیر برای شمسی بودن فراخوانی کنم (از طریق کلاس شما) متد DateTime.Now(); را ندارد


PersianCulture me = new PersianCulture();
string mydate= me.Calendar.
احتمالا باید بعد از me. متد DateTime.Now یا بعد از نقطه دوم یعنی me.Calendar. این متد وجود داشته باشد که ندارد مشکل من هم همین است
اگه یه نمونه بزارید عالیست

sanay_esh
چهارشنبه 01 آذر 1391, 20:46 عصر
در صورتی که شما بدین شکل عمل نمائید میتوانید به تاریخ شمسی دست یابید

DateTime mydate = DateTime.Now;

mehran63
چهارشنبه 01 آذر 1391, 23:14 عصر
پس با این توصیف با این کلاس دیگر تاریخ میلادی نخواهیم داشت؟