2015-05-25 4 views
1

Я хочу сделать автоматическую адаптацию или генерировать дни года, от григорианского до хиджри.Как я могу генерировать даты определенного григорианского года в Хиджри

Я имею в виду, что вы хотите, чтобы выбрать или написать год, как, например:

выберите 2015:

  • Получить все дни 2015 года в григорианском, а затем его конвертирован в Hijrim и представить список хиджры.

так что вы хотите, чтобы вернуться к списку 2 список1 список gregoriad дней против другой песни2 hijhri

Я хочу это в JavaScript и использование базы кендо-пользовательский интерфейс для его просмотра.

+0

является хиджра даты всегда же с григорианским календарем? я имею в виду две даты в 1 января 1770 года, и эта дата в Хиджри такая же в 2015 году? – Ruchan

+0

например, в день 25/5/2015 gregorian, а затем в hijri is 6 sha3ban 1436 – Danyal

+0

У вас есть пример кода того, что вы пробовали до сих пор, что не работает? – Kmeixner

ответ

1

Календарь Hirji не поддерживается с пользовательским интерфейсом Kendo.

+0

вы можете реализовать без kendo ui – Danyal

+0

можете использовать angularjs – Danyal

3

Kendo UI only поддерживает Gregorian calendar. Похоже, что не планируется добавлять других.

Вы можете использовать .NET для преобразования даты.

public string ConvertDateCalendar(DateTime DateConv, ECalenderTypes calendar, string DateLangCulture) 
{ 
    System.Globalization.DateTimeFormatInfo DTFormat; 
    DateLangCulture = DateLangCulture.ToLower(); 
    /// We can't have the hijri date writen in English. We will get a runtime error 

    if (calendar == ECalenderTypes.Hijri && DateLangCulture.StartsWith("en-")) 
    { 
     DateLangCulture = "ar-sa"; 
    } 

    /// Set the date time format to the given culture 
    DTFormat = new System.Globalization.CultureInfo(DateLangCulture, false).DateTimeFormat; 

    /// Set the calendar property of the date time format to the given calendar 
    switch (calendar) 
    { 
     case ECalenderTypes.Hijri: 
      DTFormat.Calendar = new System.Globalization.HijriCalendar(); 
      break; 

     case ECalenderTypes.Gregorian: 
      DTFormat.Calendar = new System.Globalization.GregorianCalendar(); 
      break; 

     default: 
      return ""; 
    } 

    /// We format the date structure to whatever we want 
    DTFormat.ShortDatePattern = "dd/MM/yyyy"; 
    return (DateConv.Date.ToString("f", DTFormat)); 
} 

И потом:

ConvertDateCalendar("01/01/2015", ECalenderTypes.Gregorian, "en-US"); 
ConvertDateCalendar("01/01/2015", ECalenderTypes.Hijri, "en-US"); 

JavaScript

function gmod(n,m){ 
    return ((n%m)+m)%m; 
} 
function getDate(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 writeHijriDate(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 = getDate(adjustment); 
    var outputHijriDate = wdNames[iDate[4]] + ", " + iDate[5] + " " + iMonthNames[iDate[6]] + " " + iDate[7] + " AH"; 
    return outputHijriDate; 
} 

Usage (преобразует текущую дату):

writeHijriDate(1); 
+0

спасибо, но я не люблю использовать .net. – Danyal

+0

А, я пропустил это. :) Я добавил код JavaScript тоже. – Nicholas

0

Спасибо всем Я нашел кого-то написать простую реализацию для исламского календаря (хиджры) в Javascript

http://xsoh.github.com/Hijri.js его состоят новообращенный от Хиджры до григорианских и наоборот ز

+0

благодарит заранее – Danyal

Смежные вопросы