PDA

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



shima2006
سه شنبه 27 مرداد 1388, 11:29 صبح
سلام دوستان
من یک تاریخ شمسی دارم که میخوام چند ماه بهش اضافه کنم
یعنی 01/01/1388 تبدیل بشه به 01/03/1388
دوستان در یکی از تاپیکهایه قبلی گفته بودند از این دستور میشه استفاده کرد

DATEADD(datepart,number,date)l

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

Ali_Mor
سه شنبه 27 مرداد 1388, 13:26 عصر
از کلاس PersianCalendar استفاده نمائید که متدی به نام AddMounths دارد. ورودی این تابع تاریخ بصورت DataTime است که برای اینکه تاریخ شمسی خود را بتوانید به این فرمت درآورید می توانید از متد PersianCalendar.ToDateTime استفاده نمائید

mjt327
چهارشنبه 28 مرداد 1388, 12:50 عصر
می توانی از فایلی که برات فرستادم استفاده کنی فایل ورد آن را بخوان اگر مشکلی بگو تا راهنماییت کنم مانند datetime خود دات نت است

shima2006
جمعه 30 مرداد 1388, 20:53 عصر
از کلاس PersianCalendar استفاده نمائید که متدی به نام AddMounths دارد. ورودی این تابع تاریخ بصورت DataTime است که برای اینکه تاریخ شمسی خود را بتوانید به این فرمت درآورید می توانید از متد PersianCalendar.ToDateTime استفاده نمائید

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

happy65_sh
شنبه 31 مرداد 1388, 10:08 صبح
//تبدیل تاریخ شمسی به میلادی
System.Globalization.PersianCalendar p = new PersianCalendar();
DateTime time = p.ToDateTime(1388, 2, 15, 1, 1, 1, 0, 0);
//اضافه کردن 20 روز به تاریخ
time = time.AddDays(20);
//تبدیل مجدد تاریخ به شمسی ونمایش آن
this.Text = p.GetYear(time) + "/" + p.GetMonth(time) + "/" + p.GetDayOfMonth(time);

mn_zandy63
شنبه 31 مرداد 1388, 10:09 صبح
یه مثال ساده برات میزنم:


//a sample persian date
const string persianDate = "1388/07/12";

//get date parts (year, month, day) from persian date string
string[] persianDatePart = persianDate.Split('/');

//initialize persian calendar
var pc = new PersianCalendar();

//convert persian date to gregorian date
DateTime gregorianDate = pc.ToDateTime(Int32.Parse(persianDatePart[0]), Int32.Parse(persianDatePart[1]),
Int32.Parse(persianDatePart[2]), 0, 0, 0, 0);

//add some persian months to date
DateTime newGregorianDate = pc.AddMonths(gregorianDate, 2);

//convert back gregorian date to persian date
string newPersianDate = string.Format("{0:0000}/{1:00}/{2:00}", pc.GetYear(newGregorianDate),
pc.GetMonth(newGregorianDate), pc.GetDayOfMonth(newGregorianDate));

mn_zandy63
شنبه 31 مرداد 1388, 10:27 صبح
مثل اینکه با دوستمون happy65_sh با هم یک متن رو نوشتیم٬ هر دو دقیقا یکی هستند. فرقی نداره. :لبخندساده:

shima2006
شنبه 07 شهریور 1388, 10:52 صبح
متشکرم mn_zandy63 عزیز
عالی بود

shima2006
جمعه 11 تیر 1389, 10:31 صبح
دوستان من می خوام در برخی مواقع به جایه اینکه چند واحد به ماه اضافه کنم یک واحد به سال اضافه کنم به همین منظور یک دستور IF به این کد اضافه کردم ولی موقع اجرا هیچ اتفاقی نمی افته:افسرده:


string temp = ((comboitem)credittime.SelectedItem).Type;
persiandate = xDate;
string[] persiandatepart = persiandate.Split('/');
var pc = new PersianCalendar();
DateTime gregoriandate = pc.ToDateTime(Int32.Parse(persiandatepart[0]), Int32.Parse(persiandatepart[1]), Int32.Parse(persiandatepart[2]), 0, 0, 0, 0);
DateTime newgregoriandate = pc.AddMonths(gregoriandate,Int32.Parse(temp));
if (Int32.Parse(temp) == 0)
{
DateTime newgregoriante = pc.AddYears(gregoriandate, 1);
}
string newpersiandate = string.Format("{0:0000}/{1:00}/{2:00}", pc.GetYear(newgregoriandate), pc.GetMonth(newgregoriandate), pc.GetDayOfMonth(newgregoriandate));

shima2006
شنبه 12 تیر 1389, 09:15 صبح
دوستان کسی اینجا نمیتونه به من کمک کنه؟؟؟

shima2006
دوشنبه 14 تیر 1389, 22:19 عصر
:گریه::گریه::گریه:کسی جواب این سوال رو نمی دونه؟؟؟:گریه::گریه::گریه: