2011-03-03 140 views

回答

14
function gmod(n,m){ 
return ((n%m)+m)%m; 
} 

function kuwaiticalendar(adjust){ 
var today = new Date(); 
if(adjust) { 
    adjustmili = 1000*60*60*24*adjust; 
    todaymili = today.getTime()+adjustmili; 
    today = new Date(todaymili); 
} 
day = today.getDate(); 
month = today.getMonth(); 
year = today.getFullYear(); 
m = month+1; 
y = year; 
if(m<3) { 
    y -= 1; 
    m += 12; 
} 

a = Math.floor(y/100.); 
b = 2-a+Math.floor(a/4.); 
if(y<1583) b = 0; 
if(y==1582) { 
    if(m>10) b = -10; 
    if(m==10) { 
     b = 0; 
     if(day>4) b = -10; 
    } 
} 

jd = Math.floor(365.25*(y+4716))+Math.floor(30.6001*(m+1))+day+b-1524; 

b = 0; 
if(jd>2299160){ 
    a = Math.floor((jd-1867216.25)/36524.25); 
    b = 1+a-Math.floor(a/4.); 
} 
bb = jd+b+1524; 
cc = Math.floor((bb-122.1)/365.25); 
dd = Math.floor(365.25*cc); 
ee = Math.floor((bb-dd)/30.6001); 
day =(bb-dd)-Math.floor(30.6001*ee); 
month = ee-1; 
if(ee>13) { 
    cc += 1; 
    month = ee-13; 
} 
year = cc-4716; 


wd = gmod(jd+1,7)+1; 

iyear = 10631./30.; 
epochastro = 1948084; 
epochcivil = 1948085; 

shift1 = 8.01/60.; 

z = jd-epochastro; 
cyc = Math.floor(z/10631.); 
z = z-10631*cyc; 
j = Math.floor((z-shift1)/iyear); 
iy = 30*cyc+j; 
z = z-Math.floor(j*iyear+shift1); 
im = Math.floor((z+28.5001)/29.5); 
if(im==13) im = 12; 
id = z-Math.floor(29.5001*im-29); 

var myRes = new Array(8); 

myRes[0] = day; //calculated day (CE) 
myRes[1] = month-1; //calculated month (CE) 
myRes[2] = year; //calculated year (CE) 
myRes[3] = jd-1; //julian day number 
myRes[4] = wd-1; //weekday number 
myRes[5] = id; //islamic date 
myRes[6] = im-1; //islamic month 
myRes[7] = iy; //islamic year 

return myRes; 
} 
function writeIslamicDate(adjustment) { 
var wdNames = new Array("Ahad","Ithnin","Thulatha","Arbaa","Khams","Jumuah","Sabt"); 
var iMonthNames = new Array("Muharram","Safar","Rabi'ul Awwal","Rabi'ul Akhir", 
"Jumadal Ula","Jumadal Akhira","Rajab","Sha'ban", 
"Ramadan","Shawwal","Dhul Qa'ada","Dhul Hijja"); 
var iDate = kuwaiticalendar(adjustment); 
var outputIslamicDate = wdNames[iDate[4]] + ", " 
+ iDate[5] + " " + iMonthNames[iDate[6]] + " " + iDate[7] + " AH"; 
return outputIslamicDate; 
} 

這種轉換當前計算機日期回曆。而隨着稍加修改就可以實現這個片段更改任何日期伊斯蘭

document.write(writeIslamicDate(1)); 

This site

+0

謝謝你的快速回復,我會盡量使用這個功能.. = D – FuNk 2011-03-03 07:21:14

+0

猜怎麼着,真的有用..再次感謝你.. = D – FuNk 2011-03-03 07:23:47

+0

好東西。謝謝 ! – Neophile 2011-10-30 21:24:00

4

兩者如果需要回歷日期從公曆日期(米拉迪日期)轉換的只有一年,你可以簡單地在JavaScript寫這個等式:

var GregorianYear = (new Date()).getFullYear(); 
var HijriYear = Math.round((GregorianYear - 622) * (33/32)); 

您可以在母版頁中使用這個簡單的等式在頁腳像 كلالحقوقمحفوطةل...©

<script type="text/javascript">document.write((new Date()).getFullYear())</script> م - <script type="text/javascript">var y = (new Date()).getFullYear();var h = Math.round((y - 622) * (33/32));document.write(h)</script> هـ 

您將獲得: كلالحقوقمحفوطةل...©2014م - 1435ه

你也可以使用嵌入在ASP頁面C#爲:

<%= DateTime.Now.Year %> - <%= Math.Round((DateTime.Now.Year - 622) * 1.03125) %> 

將返回時間:2014年 - 1436