PDA

View Full Version : محاسبه یک هفته بعد تاریخ



c_doost
شنبه 09 مهر 1390, 11:44 صبح
سلام

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

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

مشکل اصلی در تغییر ماه ها احساس میشه یعنی در ماه های 30 و 31 روزه چه کار کنم ؟

و در یک ماه به ماه دیگر ( مثلا تاریخ فعلی 29/6/1390 باشه و بخوام یک هفته بعد را محاسبه کنم ، چیکار کنم ؟

ya30ien2
شنبه 09 مهر 1390, 11:55 صبح
dt.adddays(5);

c_doost
شنبه 09 مهر 1390, 13:35 عصر
dt.adddays(5);

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


public string Miladi2Shamsi(DateTime _date)
{
PersianCalendar pc = new PersianCalendar();
StringBuilder sb = new StringBuilder();
sb.Append(pc.GetYear(_date).ToString("0000"));
sb.Append("/");
sb.Append(pc.GetMonth(_date).ToString("00"));
sb.Append("/");
sb.Append(pc.GetDayOfMonth(_date).ToString("00"));
return sb.ToString();
}

من با این تابع تاریخ سیستم را به شمسی تبدیل میکنم و در تکست باکس نشان میدم
لطفادر مورد تغییر ماه ها توضیح بدید

mohsen_zelzela00
شنبه 09 مهر 1390, 13:39 عصر
دوست عزیز بهترین کار اینه که از توابع خود دات نت استفاده کنی به این صورت که دوباره تاریخ شمسی را به میلادی تبدیل کنی و یک هفته به آن اضافه کنی و سپس دوباره به شمسی تبدیل کنی این چند کار خیلی سریع انجام میشن پس از لحاظ سرعت هم نباید نگران باشی.

c_doost
شنبه 09 مهر 1390, 13:43 عصر
خوب دوست من اگر مثالی داری بده

اگر به میلادی هم بگیرم چطور هفت روز بعد را حساب کنم ؟؟

Mahmoud Zaad
شنبه 09 مهر 1390, 15:54 عصر
سلام
می تونی ابتدا تاریخ فعلی رو به صورت کاراکتر تعریف کنی( با متد ToCharArray()( بعد با همون فرمتی که گفتی کاراکتر 0و1و2و3 میشن سال، کاراکتر 4 میشه /، کاراکتر 5و6 میشن ماه، کاراکتر 7 میشه / دوم و کاراکترهای 8و9 میشن روز، حالا روز رو بعلاوه هفت کن بعد شرط بزار که اگه ماه کمتر یا مساوی 6 بود روز 31 باشه و اگه بیشتر از 6و کمتر از 12 بود 30 روز و اگه ماه 12 بود 29 روز که بعد مساله سالهای کبیسه میاد که باید اونم حل کنی،اگه مشکلی بود بپرس اگه تونستم جواب میدم
موفق باشی

c_doost
شنبه 09 مهر 1390, 18:35 عصر
سلام
می تونی ابتدا تاریخ فعلی رو به صورت کاراکتر تعریف کنی( با متد ToCharArray()( بعد با همون فرمتی که گفتی کاراکتر 0و1و2و3 میشن سال، کاراکتر 4 میشه /، کاراکتر 5و6 میشن ماه، کاراکتر 7 میشه / دوم و کاراکترهای 8و9 میشن روز، حالا روز رو بعلاوه هفت کن بعد شرط بزار که اگه ماه کمتر یا مساوی 6 بود روز 31 باشه و اگه بیشتر از 6و کمتر از 12 بود 30 روز و اگه ماه 12 بود 29 روز که بعد مساله سالهای کبیسه میاد که باید اونم حل کنی،اگه مشکلی بود بپرس اگه تونستم جواب میدم
موفق باشی
برای سال های کبیسه چی کار کنم یه توضیح کامل با یه مثال میتونه کمک بزرگی واسم باشه

Mahmoud Zaad
یک شنبه 10 مهر 1390, 09:41 صبح
سالهای کبیسه سالهایی هستند که باقیمانده تقسیمشان بر 33 یکی از عددهای 1،5،9،13،17،22،26یا30 باشه. خب شما سال رو تقسیم بر 33 کن و باقیمانده شو بدست بیار معلوم میشه کبیسه هست یا نه. حالا اگر سال کبیسه بود و ماه 12 روز میتونه 30 روز باشه در غیر اینصورت (ماه 12و سال غیر کبیسه) روز 29 هست.

faravaghi
یک شنبه 10 مهر 1390, 13:27 عصر
سلام،
این جوریم میشه
public string Miladi2Shamsi(DateTime _date)
{
System.DateTime answer = _date.AddDays(7);

PersianCalendar pc = new PersianCalendar();
StringBuilder sb = new StringBuilder();
sb.Append(pc.GetYear(answer).ToString("0000"));
sb.Append("/");
sb.Append(pc.GetMonth(answer).ToString("00"));
sb.Append("/");
sb.Append(pc.GetDayOfMonth(answer).ToString("00"));
return sb.ToString();
}
موفق باشید.