PDA

View Full Version : مشکل در کد تقویم شمسی



MrHosseinbor
چهارشنبه 03 اردیبهشت 1393, 08:17 صبح
سلام بچه ها مشکل این کد کجاست روز 30 تا بیشتر نشون میده!

string ShamsiDate(int iMiladiYear, int iMildiMonth, int iMiladiDay) {
string tmp = "";
int[] iMiladiMonthsDays = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
bool IsLeapYear=((iMiladiYear%4)==0);
int iTotalMiladiDay, iMiladiYearsDay = 0, iMiladiMonthsDay = 0,
iTotalShamsiDay=0,iShamsiYearsDay=0,iShamsiYear=0,
iShamsiMonth=0,iShamsiDay=0,iShamsiMonthsDay=0;

for (int i = 0; i < iMildiMonth; i++)
{
iMiladiMonthsDay += iMiladiMonthsDays[i] + (IsLeapYear && i == 1 ? 1 : 0);
}

iMiladiYearsDay = iMiladiYear * 365 + iMiladiYear / 4;
iTotalMiladiDay = iMiladiYearsDay + iMiladiMonthsDay + iMiladiDay;
iTotalShamsiDay = iTotalMiladiDay - 226899;

iShamsiYear = iTotalShamsiDay / 365;
iShamsiYear = (iTotalShamsiDay - iShamsiYear / 4)/365;

iShamsiMonthsDay = iTotalShamsiDay - (iShamsiYear * 365 + iShamsiYear / 4);

tmp = iShamsiYear + "/" + iShamsiMonth + "/" + iShamsiDay;

return tmp;
}

MrHosseinbor
چهارشنبه 03 اردیبهشت 1393, 18:51 عصر
دوستان کسی نیست راهنمایی کنه لطفا

kurdboy2175
چهارشنبه 03 اردیبهشت 1393, 18:55 عصر
سلام دوست من این همه کد برای چیه میخوای چکار کنی؟

alireza1268
چهارشنبه 03 اردیبهشت 1393, 19:13 عصر
سلام
من از این کد استفاده می کنم

PersianCalendar
pc = new PersianCalendar();


string dat1 = pc.GetYear(DateTime.Now) + "/" + pc.GetMonth(DateTime.Now) + "/" + pc.GetDayOfMonth(DateTime.Now);


DateTime res;


DateTime.TryParseExact(dat1, "yyyy/M/d", CultureInfo.InvariantCulture, DateTimeStyles.None, out res);


string todt = res.ToString("yyyyMMdd");

texData.Text = todt;



کد یوزینگشم مثل زیر
using
System.Globalization;

MrHosseinbor
چهارشنبه 03 اردیبهشت 1393, 19:19 عصر
سلام دوست عزیز اینو برای تبدیل کد میلادی به شمسی استفاده می کنم دلیل اینه خودم میخوام چونکه تمرین نکردم برام تمرین بشه

alireza1268
چهارشنبه 03 اردیبهشت 1393, 19:22 عصر
سلام
من از این کد استفاده می کنم





PersianCalendar pc = new PersianCalendar();


string dat1 = pc.GetYear(DateTime.Now) + "/" + pc.GetMonth(DateTime.Now) + "/" + pc.GetDayOfMonth(DateTime.Now);


DateTime res;


DateTime.TryParseExact(dat1, "yyyy/M/d", CultureInfo.InvariantCulture, DateTimeStyles.None, out res);


string todt = res.ToString("yyyyMMdd");

texData.Text = todt;

MrHosseinbor
چهارشنبه 03 اردیبهشت 1393, 20:11 عصر
دوست عزیز بحث اون نیست من میخوام خودم الگوشو یاد بگیرم که برای مثال تو زبانهایه دیگر مثل c++ و یا php و یا ... بتونم استفاده کنم به هر حال ممنون بابت کمکت ان شا الله بتونم جبران کنم

MrHosseinbor
پنج شنبه 04 اردیبهشت 1393, 06:45 صبح
سلام مشکل رو فهمیدم از کجاست مشکل از خط شماره 9 کد من بود تشکر از دوستان بابت پیگیری