آبجی
6th January 2010, 12:42 AM
برنامه تبدیل تاریخ میلادی به شمسی
با این برنامه به راحتی می توانید تاریخ میلادی را به هجری شمسی تبدیل کنید و آن را در برنامه هایتان استفاده نمایید. کاربرد این برنامه خیلی زیاد است مثلا به راحتی می توان آن را در برنامه همین تالار استفاده کرد. هرچند که در برنامه تالار گفتگو فعلا بنا بر این بوده که تغییرات ساختاری به وجود نیاید تا version نهایی آن تولید شود.
کد:
public string Shamsi(string date)
{
int[] arrMonths ={ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int[] arrStart ={ 21, 20, 21, 21, 22, 22, 23, 23, 23, 23, 22, 22 };
char[] sep ={ '/' };
string[] arrDate = date.Split(sep);
int year = Convert.ToInt32(arrDate[0]);
int month = Convert.ToInt32(arrDate[1]);
int day = Convert.ToInt32(arrDate[2]);
if (year % 4 == 0)
{
for (int i = 2; i < 12; i++)
arrStart[i]--;
arrMonths[1]++;
if (month == 1) arrStart[11]++;
}
else if (year % 4 == 1)
{
arrStart[0]--;
arrStart[1]--;
if (month == 1) arrStart[11]--;
}
year = month <= 3 ? year - 622 : year - 621;
if (month == 3 && day >= arrStart[2]) year++;
if (day < arrStart[month - 1])
{
int i = month == 1 ? 11 : month - 2;
day = day - arrStart[i] + arrMonths[i] + 1;
month -= 3;
}
else
{
day = day - arrStart[month - 1] + 1;
month -= 2;
}
if (month <= 0) month += 12;
return year + "/" + Convert.ToString(month).PadLeft(2,'0') + "/" +
Convert.ToString(day).PadLeft(2,'0');
}
تابع فوق یک رشته حاوی تاریخ میلادی را دریافت کرده به تاریخ شمسی تبدیل می کند و این تاریخ شمسی را به صورت یک رشته برمی گرداند.
خدای مهربان یارتان باد http://www.forum.microrayaneh.com/images/smilies/rose.gif
با این برنامه به راحتی می توانید تاریخ میلادی را به هجری شمسی تبدیل کنید و آن را در برنامه هایتان استفاده نمایید. کاربرد این برنامه خیلی زیاد است مثلا به راحتی می توان آن را در برنامه همین تالار استفاده کرد. هرچند که در برنامه تالار گفتگو فعلا بنا بر این بوده که تغییرات ساختاری به وجود نیاید تا version نهایی آن تولید شود.
کد:
public string Shamsi(string date)
{
int[] arrMonths ={ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int[] arrStart ={ 21, 20, 21, 21, 22, 22, 23, 23, 23, 23, 22, 22 };
char[] sep ={ '/' };
string[] arrDate = date.Split(sep);
int year = Convert.ToInt32(arrDate[0]);
int month = Convert.ToInt32(arrDate[1]);
int day = Convert.ToInt32(arrDate[2]);
if (year % 4 == 0)
{
for (int i = 2; i < 12; i++)
arrStart[i]--;
arrMonths[1]++;
if (month == 1) arrStart[11]++;
}
else if (year % 4 == 1)
{
arrStart[0]--;
arrStart[1]--;
if (month == 1) arrStart[11]--;
}
year = month <= 3 ? year - 622 : year - 621;
if (month == 3 && day >= arrStart[2]) year++;
if (day < arrStart[month - 1])
{
int i = month == 1 ? 11 : month - 2;
day = day - arrStart[i] + arrMonths[i] + 1;
month -= 3;
}
else
{
day = day - arrStart[month - 1] + 1;
month -= 2;
}
if (month <= 0) month += 12;
return year + "/" + Convert.ToString(month).PadLeft(2,'0') + "/" +
Convert.ToString(day).PadLeft(2,'0');
}
تابع فوق یک رشته حاوی تاریخ میلادی را دریافت کرده به تاریخ شمسی تبدیل می کند و این تاریخ شمسی را به صورت یک رشته برمی گرداند.
خدای مهربان یارتان باد http://www.forum.microrayaneh.com/images/smilies/rose.gif