2011-11-17 121 views
2

之間傳輸是否有Matlab代碼,從陽曆Matlab代碼公曆,回曆日曆

轉讓日期(日,月,年)回曆(伊斯蘭)歷,也從回曆陽曆,

讓我們假設我們要改變的陽曆日子:

週五,第18 /二千零十一分之十一

到這是05月22/12/1432年

回曆日期

謝謝

+1

請看到這裏的討論:HTTP:/ /www.mathworks.com/matlabcentral/newsreader/view_thread/146181。它說:「Hirji日曆在不同地點有所不同 因此沒有可能的廣義轉換算法,只有與特定位置相關的歷史數據表。」 – petrichor

+0

感謝您的回覆。是的,據瞭解,Hijri日曆依賴於月球,而且從互聯網上的許多轉換器程序可以看出,兩個日曆之間的轉換具有一天的最大誤差。我想要這個轉換的公式。另外,我在這個鏈接中找到了一個java腳本:http://stackoverflow.com/questions/5177598/how-to-convert-gregorian-date-to-hijri-date,但我不知道把它翻譯成Matlab。問候 – user488182

+0

我也google了,但找不到一個現成的代碼。我想你會成爲第一個:) – petrichor

回答

2

如果你在Windows上,你可以使用MATLAB內部的.NET Framework

下面是Gregorian日期轉換爲Hijri(基於CodeProject文章)的函數:

function out = GregToHijri(str, frmtIn, frmtOut) 
    % English (US) and Arabic (Saudi Arabia) cultures 
    enCult = System.Globalization.CultureInfo('en-US',false); 
    enCult.DateTimeFormat.Calendar = System.Globalization.GregorianCalendar(); 
    arCult = System.Globalization.CultureInfo('ar-SA',false); 
    arCult.DateTimeFormat.Calendar = System.Globalization.HijriCalendar(); 

    % parse using supplied input format 
    dt = System.DateTime.ParseExact(str, frmtIn, enCult.DateTimeFormat); 

    % convert datetime as formatted string 
    out = char(dt.ToString(frmtOut, arCult.DateTimeFormat)); 
end 

測試您的輸入:

>> GregToHijri('Friday, 18/11/2011', 'dddd, dd/MM/yyyy', 'dd/MM/yyyy') 
ans = 
22/12/1432