delphi4arab منتديات دلفي للعرب

نسخة كاملة : التحويل بين الهجري الى الميلادي
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
PHP كود :
uses DateUtils; 

PHP كود :
TMyDATE = record
  Year
: Word;
  
Month: Word;
  
Day: Word;
end; 
PHP كود :
function HijriConvert(_date:TDateTime) : TMyDATE;
var 
l,n,j:Real;
begin

        l
:=DateTimeToJulianDate(_date)-1948440+10632;
        
n := int ((l- 1) / 10631);
        
l := l- 10631 * n + 354;
        
j := (int ((10985 - l) / 5316)) *(int (50 * l/ 17719)) +(int (l / 5670)) *(int (43 * l / 15238));
        
l := l- (int ((30 - j) / 15)) *(int ((17719 * j) / 50)) -(int (j / 16)) *(int ((15238 * j) / 43)) + 29;

        
Result.month := Trunc(24 * l / 709);
        
Result.day := Trunc(   l - int (709 * Result.month / 24)   );
        
Result.year := Trunc(30 * n + j - 30);
    
end; 
الاستخدام
PHP كود :
ShowMessage(IntToStr(HijriConvert(Date).Year)); 

قمت بتحويل كود الجافا الى دلفي
إقتباس :https://code.google.com/p/mobimoon/
العكس
الاستخدام
PHP كود :
ShowMessage(IntToStr(GregConvert(date1).Day)); 
PHP كود :
function GregConvert(_date:TDateTime):  TMyDATE ;
var  
y,m,d: word;
dat:TDateTime;
begin
DecodeDate
(_date,y,m,d);
DecodeDate(JulianDateToDateTime((11 * y + 3) / 30+ 354 * y+ 30 * m- (m - 1) / 2+ d + 1948440 - 385),y,m,d);
 
Result.Year:=y;
 
Result.Month:=m;
 
Result.Day:=d;
end;