سلام خدمت تمامی دلفی کار های عزیز... شاید تا به حال براتون پیش اومده باشه که یک برنامه فارسی زبان نوشتید و نیاز به یک تاریخ شمسی داشتید که تو برنامتون نمایش داده بشه و به مشگل بر خوردید....همین مشگل برای خودم چند وقت پیش به وجود اومد که تصمیم گرفتم خودم این مشگل رو حل کنم واشه همین دست به کار شدم و دو تا تابع نوشتم که میشه گفت مشگلم را حل کرد امروز که داشتم سورس های دلفیمو زیرورو میکردم این کد رو دیدم گفتم بزار واسه برنامه نویس های عزیز بزارمش...از اساتید اگه این توابع نقصی داشتن خوشحال میشم راهنمایی بفرمایین....
این تابع تاریخ شمسی رو به صورت عددی باز میگرداند:
Function IntShamsiDate:String;
var yy,mm,dd:word;
yi,mi,di:integer;
ys,ms,ds:string;
begin
decodedate(now,yy,mm,dd);
yi:=yy-621;
mi:=mm-3;
case mm of
1 :di:=dd+10;
2 :di:=dd+11;
3 :di:=dd+9;
4 :di:=dd+11;
5 :di:=dd+10;
6 :di:=dd+10;
7 :di:=dd+9;
8 :di:=dd+9;
9 :di:=dd+9;
10 :di:=dd+8;
11 :di:=dd+9;
12 :di:=dd+9;
end;
if mi<=0 then
begin
mi:=12+mi;
yi:=yi-1;
end;
if (mi>=1) and (mi<7) then
begin
if di>31 then
begin
di:=di-31;
mi:=mi+1;
end;
End else
if (mi>=7) and (mi<12) then
begin
if di>30 then
begin
di:=di-30;
mi:=mi+1;
end;
end else if mi=12 then
begin
if di>29 then begin
di:=di-29;
mi:=1;
yi:=yi+1;
end;
end;
if mi<10 then begin
ms:='0'+inttostr(mi);
end else
ms:=inttostr(mi);
if di<10 then begin
ds:='0'+inttostr(di);
end else
ds:=inttostr(di);
result:=inttostr(yi)+'/'+ms+'/'+ds;
End;
این تابع تاریخ رو به صورت حروف باز میگرداند:
function StrShamsiDate:String;
var yy,mm,dd:word;
yi,mi,di:integer;
ys,ms,ds:string;
begin
decodedate(now,yy,mm,dd);
yi:=yy-621;
mi:=mm-3;
case mm of
1 :di:=dd+10;
2 :di:=dd+11;
3 :di:=dd+9;
4 :di:=dd+11;
5 :di:=dd+10;
6 :di:=dd+10;
7 :di:=dd+9;
8 :di:=dd+9;
9 :di:=dd+9;
10 :di:=dd+8;
11 :di:=dd+9;
12 :di:=dd+9;
end;
if mi<=0 then
begin
mi:=12+mi;
yi:=yi-1;
end;
if (mi>=1) and (mi<7) then
begin
if di>31 then
begin
di:=di-31;
mi:=mi+1;
end;
End else
if (mi>=7) and (mi<12) then
begin
if di>30 then
begin
di:=di-30;
mi:=mi+1;
end;
end else if mi=12 then
begin
if di>29 then begin
di:=di-29;
mi:=1;
yi:=yi+1;
end;
end;
case Mi of
1 :ms:='فروردين';
2 :ms:='ارديبهشت';
3 :ms:='خرداد';
4 :ms:='تير';
5 :ms:='مرداد';
6 :ms:='شهريور';
7 :ms:='مهر';
8 :ms:='آبان';
9 :ms:='آذز';
10 :ms:='دي';
11 :ms:='بهمن';
12 :ms:='اسفند';
end;
case di of
1 :ds:='يکم';
2 :ds:='دوم';
3 :ds:='سوم';
4 :ds:='چهارم';
5 :ds:='پنجم';
6 :ds:='ششم';
7 :ds:='هفتم';
8 :ds:='هشتم';
9 :ds:='نهم';
10 :ds:='دهم';
11 :ds:='يازده ام';
12 :ds:='دوازده ام';
13 :ds:='سيزده ام';
14 :ds:='چهارده ام';
15 :ds:='پانزده ام';
16 :ds:='شانزده ام';
17 :ds:='هفده ام';
18 :ds:='هيجده ام';
19 :ds:='نوزده ام';
20 :ds:='بيستم';
21 :ds:='بيست و يکم';
22 :ds:='بيست و دوم';
23 :ds:='بيست و سوم';
24 :ds:='بيست و چهارم';
25 :ds:='بيست و پنجم';
26 :ds:='بيست وششم';
27 :ds:='بيست و هفتم';
28 :ds:='بيست و هشتم';
29 :ds:='بيست و نهم';
30 :ds:='سي ام';
31 :ds:='سي و يکم';
end;
result:=ds+' '+ms+' '+inttostr(yi);
end;
اگه خواستی تشکر کنی دگمه تشکر سمت چپ پایین این پسته