PDA

View Full Version : فاکنشن تبديل تاريخ شمسي به ميلادي



h_mohamadi
پنج شنبه 19 فروردین 1389, 17:19 عصر
سلام دوستان من نياز به فاکنشن تبديل تاريخ شمسي به ميلادي دارم اگر لطف کنيد من را راهنمايي فرمائيد

جواد ملاولی
پنج شنبه 19 فروردین 1389, 20:00 عصر
سلام. چرا از کامپوننت تاریخ شمسی آقای خورسندی استفاده نمی کنی؟
http://barnamenevis.org/forum/showthread.php?t=110628

alidehban
شنبه 21 فروردین 1389, 01:48 صبح
سلام...
غیر از کامپوننت استاد خورسندی این توابع هم هستن...

h_mohamadi
سه شنبه 24 فروردین 1389, 12:23 عصر
سلام دوستان این هم فاکشن دلفی

Function shamsi2miladi(date:String):String;
var
y,m,d:Integer;
begin
y := StrToInt(copy(shdate,1,4));
m := StrToInt(copy(shdate,5,2));
d := StrToInt(copy(shdate,7,2));

If (m < 10) Or ((m = 10) And (d < 11)) Then
y := y + 621
Else
y := y + 622;

Case m of
1: If d < 12 Then
begin
m := 3;
d := d + 20;
end
Else
begin
m := 4;
d := d - 11;
end;
2: If d < 11 Then
begin
m := 4;
d := d + 20;
end
Else
begin
m := 5;
d := d - 10;
end;
3: If d < 11 Then
begin
m := 5;
d := d + 21;
end
Else
begin
m := 6;
d:= d - 10;
end;
4: If d < 10 Then
begin
m := 6;
d := d + 21;
end
Else
begin
m := 7;
d := d - 9;
end;
5, 6, 8: If d < 10 Then
begin
m := m + 2;
d := d + 22;
end
Else
begin
m := m + 3;
d:=d-9;
end;
7: If d < 9 Then
begin
m := 9;
d := d + 22;
end
Else
begin
m := 10;
d := d - 8 ;
end;
9: If d < 10 Then
begin
m := 11;
d := d + 21;
end
Else
begin
m := 12;
d := d - 9 ;
end;
10: If d < 11 Then
begin
m := 12;
d := d + 21;
end
Else
begin
m := 1;
d := d - 10 ;
end;
11: If d < 12 Then
begin
m := 1;
d := d + 20;
end
Else
begin
m := 2;
d := d - 11;
end;
12: If d < 10 Then
begin
m := 2;
d := d + 19;
end
Else
begin
m := 3;
d := d - 9;
end;
End;
Result:=IntToStr(y)+'/'+Copy('0'+IntToStr(m),Length(IntToStr(m)),2)+'/'+Copy('0'+IntToStr(D),Length(IntToStr(D)),2);