PDA

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



morika
چهارشنبه 15 آذر 1391, 11:10 صبح
سلام
من یه تاریخ شمسی تو برنامه دارم (PersianCalendar) حالا می خوام یه روز یا یه هفته ازش کم کنم. چطوری باید این کارو انجام بدم؟
ممنون

saeed.8350028
چهارشنبه 15 آذر 1391, 11:13 صبح
من توی این کد یک زمان که string هست را بهش نسبت دادم امیدوارم به دردت بخوره
string s = patient.birthDay;
FreeControls.PersianDate d = new FreeControls.PersianDate(Convert.ToInt32(s.Substri ng(0, 4)), Convert.ToInt32(s.Substring(5, 2)), Convert.ToInt32(s.Substring(8, 2)));
dateBirthDay.Value = d;

morika
چهارشنبه 15 آذر 1391, 12:34 عصر
نه. من تاریخ روز رو به شمسی تبدیل کردم جالا می خوام از این تاریخ 7 روز کم کنم

saeed.8350028
چهارشنبه 15 آذر 1391, 13:05 عصر
خوب 7 روز کم کن و دوباره به روش بالا ست کن.

morika
چهارشنبه 15 آذر 1391, 13:27 عصر
خب مشکل همینه دیگه. چجوری 7 روز کم کنم؟ با کدوم تابع؟ همینجوری که نمیشه منهای 7 کردش

Mahmoud.Afrad
چهارشنبه 15 آذر 1391, 13:37 عصر
تاریخ رو به datetime تبدیل و از متد addDays استفاده کنید آخر سر دوباره به شمسی تبدیل کنید:
DateTime dTime = new DateTime(1391, 09, 15, new PersianCalendar());
dTime.AddDays(-7);

morika
چهارشنبه 15 آذر 1391, 17:07 عصر
راستش من هرکاری می کنم نمیشه. میشه لطف کنین یه نمونه کد بزارین؟ همه این کارارو می کنم ولی در نهایت این dTime هیچ تغییری نمیکنه. اصلا تاریخش هم به میلادی میزاره دوباره. بودن و نبودن اون add.days هم هیچ تاثیری توش نداره.
من با این کد تاریخ رو شمسی می کنم:
PersianCalendar PerCal = new PersianCalendar();
string Year, Day, Month;
int date;
Year = PerCal.GetYear(DateTime.Now).ToString();
Month = PerCal.GetMonth(DateTime.Now).ToString();
Day = PerCal.GetDayOfMonth(DateTime.Now).ToString();
Day = (Day.Length == 1) ? "0" + Day : Day;
Month = (Month.Length == 1) ? "0" + Month : Month;
return date = Convert.ToInt32(Year + Month + Day);

morika
چهارشنبه 15 آذر 1391, 17:14 عصر
با این کد درست شد
PersianCalendar PerCal = new PersianCalendar();
int lastday;
return lastday = PerCal.GetDayOfMonth(DateTime.Now.AddDays(-1));

manelian00021
یک شنبه 01 اردیبهشت 1392, 08:51 صبح
public

متد برای تبدیل دیت تایم به تاریخ شمسی می باشد static string ChangeCalander(DateTime dt)

{
string StDate = "";
System.Globalization.PersianCalendar pcal = newPersianCalendar();
string strMonth = pcal.GetMonth(dt).ToString();
string strDay = pcal.GetDayOfMonth(dt).ToString();
int Month = pcal.GetMonth(dt);
if (Month < 10)
{
strMonth = "0" + pcal.GetMonth(dt).ToString();
}
int Day = pcal.GetDayOfMonth(dt);
if (Day < 10)
{
strDay = "0" + pcal.GetDayOfMonth(dt).ToString();
}
return StDate = pcal.GetYear(dt).ToString() + '/' + strMonth + '/' + strDay;
}
این متد برای تبدیل تاریخ شمسی به دیت تایم می باشد public static DateTime ToDateTime(string date)
{
PersianCalendar pcal = newPersianCalendar();
return pcal.ToDateTime(int.Parse(date.Substring(0, 4)), int.Parse(date.Substring(5, 2)), int.Parse(date.Substring(8, 2)), 0, 0, 0, 0);
}
این متد اصلي است تاريخ را به فارسی بدهید و تعداد روزهایی که می خواهید کم شود اگر می خواهید روز اضافه کنید یا روز را منفی بدهید یا اون منفی داخل متد را بردارید public static string ShowDayBefore(string date,int day)
{
DateTime dt=newDateTime();
dt = ToDateTime(date);
string output = "";
PersianCalendar pcal = newPersianCalendar();
return ChangeCalander(pcal.AddDays(dt, -1 * day));


}