Senior Member
تاريخ عضويت: Mar 2006
محل سكونت: تهرانپارس
ارسالها: 148
تشکر: 57
تشکر از ايشان: 301 بار در 96 پست
|
نقل قول:
نوشته اصلي بوسيله Mehdi..4X
سلام خدمت تمامي دوستان سرمايه دار
من دنبال يه برنامه هستم كه هنوز نتونستم پيداش كنم
شرح برنامه مورد نظر:
من يه برناممه اي ميخوام كه تاريخ ميلادي رو به تاريخ شمسي برگردونه و برعكسش
البته تو سايت http://www.persianforum.net فكر كنم يه همچين چيزي گذاشته بود ولي من موفق نشدم تو اين سايت ثبت نام كنم.(انشالله كه شما بتونين  )
تو سايتاي خارجكي هم گذاشته بودن ولي به جاي تاريخ شمسي تاريخ قمري رو داشت.
خلاصه هركس آدرس همچين برنامه اي رو داره بده. من خودم دسشتو مي بوسم. 
|
سلام آقا مهدی .
این یه کلاس #C که خودم نوشتم البته الگوریتمش ماله یکی دیگست ببین بدردت میخوره خواستی با C هم فکر کنم داشته باشمش.
PHP Code:
public struct ShamsiDate
{
public int iYear;
public int iMonth;
public int iDay;
}
public struct GregorianDate
{
public int iYear;
public int iMonth;
public int iDay;
}
public class Shamsi
{
private Shamsi(){}
private static int[] ShamsiMonthsLong = {0,31,31,31,31,31,31,31,30,30,30,30,30,29};
public static ShamsiDate Today
{
get
{
return Shamsi.GregorianToShamsi(DateTime.Now.Year,
DateTime.Now.Month,DateTime.Now.Day);
}
}
public static string TodayString
{
get
{
DateTime dt = DateTime.Now;
ShamsiDate sh = Shamsi.GregorianToShamsi(dt.Year,dt.Month,dt.Day);
return (sh.iYear.ToString() + "/" + sh.iMonth.ToString("00") + "/" +
sh.iDay.ToString("00"));
}
}
public static string CurrentTime
{
get
{
return DateTime.Now.Hour.ToString("00")
+ ":" + DateTime.Now.Minute.ToString("00")+":"
+DateTime.Now.Second.ToString("00");
}
}
public static string[] ShamsiMonths = {" ","فروردين","ارديبهشت","خرداد","تير",
"مرداد","شهريور","مهر","آبان","آذر","دي","بهمن","اسفند"};
public static ShamsiDate GregorianToShamsi(int iGregorianYear,int iGregorianMonth
,int iGregorianDay)
{
int shamsiDay, shamsiMonth, shamsiYear;
int dayCount,farvardinDayDiff,deyDayDiff ;
int[] sumDayGregorianMonth = {0,31,59,90,120,151,181,212,243,273,304,334};
int[] sumDayGregorianMonthLeap= {0,31,60,91,121,152,182,213,244,274,305,335};
ShamsiDate shamsidate;
farvardinDayDiff=79;
if (GregorianIsLeap(iGregorianYear))
{
dayCount = sumDayGregorianMonthLeap[iGregorianMonth-1] + iGregorianDay;
}
else
{
dayCount = sumDayGregorianMonth[iGregorianMonth-1] + iGregorianDay;
}
if((GregorianIsLeap(iGregorianYear - 1)))
{
deyDayDiff = 11;
}
else
{
deyDayDiff = 10;
}
if (dayCount > farvardinDayDiff)
{
dayCount = dayCount - farvardinDayDiff;
if (dayCount <= 186)
{
switch (dayCount%31)
{
case 0:
shamsiMonth = dayCount / 31;
shamsiDay = 31;
break;
default:
shamsiMonth = (dayCount / 31) + 1;
shamsiDay = (dayCount%31);
break;
}
shamsiYear = iGregorianYear - 621;
}
else
{
dayCount = dayCount - 186;
switch (dayCount%30)
{
case 0:
shamsiMonth = (dayCount / 30) + 6;
shamsiDay = 30;
break;
default:
shamsiMonth = (dayCount / 30) + 7;
shamsiDay = (dayCount%30);
break;
}
shamsiYear = iGregorianYear - 621;
}
}
else
{
dayCount = dayCount + deyDayDiff;
switch (dayCount%30)
{
case 0 :
shamsiMonth = (dayCount / 30) + 9;
shamsiDay = 30;
break;
default:
shamsiMonth = (dayCount / 30) + 10;
shamsiDay = (dayCount%30);
break;
}
shamsiYear = iGregorianYear - 622;
}
shamsidate.iYear = shamsiYear;
shamsidate.iMonth = shamsiMonth;
shamsidate.iDay = shamsiDay;
return shamsidate ;
}
public static ShamsiDate GregorianToShamsi(DateTime dt)
{
return GregorianToShamsi(dt.Year,dt.Month,dt.Day);
}
public static bool GregorianIsLeap(int GregorianYear)
{
if(((GregorianYear % 100)!= 0 && (GregorianYear % 4) == 0)
|| ((GregorianYear % 100)== 0 && (GregorianYear % 400) == 0))
return true;
else
return false;
}
public GregorianDate ShamsiToGregorian(string strCalendar)
{
string[] str = strCalendar.Split(new char[]{'/'});
return ShamsiToGregorian(Convert.ToInt32(str[0]),Convert.ToInt32(str[1]),
Convert.ToInt32(str[2]));
}
public static GregorianDate ShamsiToGregorian(int ShamsiYear,
int ShamsiDay,int ShamsiMonth)
{
GregorianDate gregorianDate, farvardin1st;
int marchDayDiff, remainDay=0;
int dayCount, iGregorianYear, i;
int[] iGregorianMonth = {30,31,30,31,31,30,31,30,31,31,28,31};
iGregorianYear = ShamsiYear + 621;
if(GregorianIsLeap(iGregorianYear))
{
farvardin1st.iMonth = 3;
farvardin1st.iDay = 20;
marchDayDiff = 12;
}
else
{
farvardin1st.iMonth = 3;
farvardin1st.iDay =21;
marchDayDiff = 11;
}
if(GregorianIsLeap(iGregorianYear+1))
{
iGregorianMonth[10] = iGregorianMonth[10] + 1;
}
if((ShamsiMonth>=1)&&( ShamsiMonth<=6))
dayCount = ((ShamsiMonth-1) * 31) + ShamsiDay;
else
dayCount =(6 * 31) + ((ShamsiMonth - 7) * 30) + ShamsiDay;
if (dayCount <= marchDayDiff)
{
gregorianDate.iDay = dayCount + (31 - marchDayDiff);
gregorianDate.iMonth = 3;
gregorianDate.iYear=iGregorianYear;
}
else
remainDay = dayCount - marchDayDiff;
i = 0;
while ((remainDay > iGregorianMonth[i]))
{
remainDay = remainDay - iGregorianMonth[i];
i++;
}
gregorianDate.iDay = remainDay;
if (i > 8)
{
gregorianDate.iMonth = i - 8;
gregorianDate.iYear = iGregorianYear + 1;
}
else
{
gregorianDate.iMonth = i + 4;
gregorianDate.iYear = iGregorianYear;
}
return gregorianDate;
}
}
__________________
The market will quite naturally make you face what is inside of you on a
moment-to-moment basis. What is inside of you could be confidence or fear, a
perception of opportunity or loss, restraint or uncontrollable greed, objectivity or
illusion. The market just reflects these mental conditions, it does not create them .
|