سلام
من این کارو انجام دادم و خیلی خوب بود.
اول یه Function تو کریستال درست کن و این کد رو توش کپی کن
Function (datevar MyDate)
(
numbervar MyYear:=year(MyDate);
numbervar MyMonth:=month(MyDate);
numbervar MyDay:=datepart('D',MyDate);
numbervar array DaysToMonth365 := [ 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 ];
numbervar array DaysToMonth366 := [ 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366 ];
numbervar array DaysToMonth := [ 0, 31, 62, 93, 124, 155, 186, 216, 246, 276, 306, 336 ];
numbervar array LeapYears33 := [ 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0 ];
booleanvar IsLeapYear;
if ((myyear mod 4) <> 0) then
IsLeapYear := false
else if ((myyear mod 100) = 0) then
IsLeapYear := ((myyear mod 400) = 0)
else
IsLeapYear := true;
numbervar array numArray1;
if (IsLeapYear) then
numArray1 := DaysToMonth366
else
numArray1 := DaysToMonth365;
numberVar num1 := int( myyear - 1);
numberVar num2 := int(((((((num1 * 365) + (num1 / 4)) - (num1 / 100)) + (num1 / 400)) + numArray1[mymonth]) + myday) - 1);
numberVar num4 := num2 + 1;
numberVar PersianYear := int((((num4 - 226894) * 33) / (12053)))+ 1;
numberVar numtmp2 :=int( (PersianYear - 1) / 33);
numberVar yeartmp := int((PersianYear - 1) mod 33);
numberVar num5 := (numtmp2 * 12053) + 226894;
while (yeartmp > 0) do
(
num5 := num5 + 365;
if (LeapYears33[(yeartmp Mod 33)+1] = 1) then
num5 := num5 + 1;
yeartmp := yeartmp - 1
);
numberVar num6;
num5;
if (PersianYear = 9378) then
num6 := DaysToMonth[10] + 10
else if (LeapYears33[(PersianYear Mod 33)+1] <> 1) then
num6 := 365
else
num6 := 366;
if (num4 < num5) then
(
num5 := num5 - num6;
PersianYear := PersianYear - 1;
)
else if (num4 = num5) then
(
PersianYear := PersianYear - 1;
numberVar temp;
if (PersianYear = 9378) then
temp := DaysToMonth[10] + 10
else if (LeapYears33[(PersianYear mod 33)+1] <> 1) then
temp := 365
else
temp := 366;
num5 := num5 - temp
)
else if (num4 > (num5 + num6)) then
(
num5 := num5 + num6;
PersianYear:=PersianYear+1
);
num4:= num4 - num5;
numberVar num12 := 0;
while ((num12 < 12) and (num4 > DaysToMonth[num12+1])) do
(
num12:=num12+1;
);
numberVar num3 := int(num4) - DaysToMonth[num12];
Stringvar Text :=Cstr( PersianYear,'0000')+'/'+Cstr(num12,'00')+'/'+Cstr(num3,'00');
)
بعد یه فرمول درست کن اینو توش بنویس
ConvertDatetoPersianDate(CurrentDate);
بعد فرمول رو بکش رو گزارش هرجا خواستی بزار.
موفق باشی