2017-10-13 6 views
1

こんにちはAngularjs/JavaScriptでWebアプリケーションを開発しています。 1つのカレンダーピッカーがあり、フロントエンドから日付を取得しています。選択した日付をデータベースに保存するとき、Hijri形式で保存します。私はConverting Gregorian date to Hijri dateに続き、writeIslamicDateで1を渡すとうまく動作します。たとえば :私は今日の日付を渡すとjavascriptの日付をhijri形式に変換するにはどうすればいいですか?

var today=new Date(); 
writeIslamicDate(today); 

、それはので、私は、私はwriteIslamicDateに入力を渡す前に、任意の形式に変換する必要があります知っているかもしれない私にundefined, NaN undefined NaN AHを与えますか?誰かがこれで私を助けることができますか?どんな助けもありがとう。ありがとうございました。

答えて

2

あなたが必要なのは、あなたがリンク機能に微調整され、それ日

Git Repo

moment('2014-11-28 16:40:00', 'YYYY-M-D HH:mm:ss').endOf('iMonth').format('iYYYY/iM/iD HH:mm:ss'); // 1436/2/30 23:59:59 

JSFIDDEL Exemple

+0

感謝。だから、moment.jsをダウンロードする必要がありますか? endyf( 'iMonth')。書式( 'iYYYY/iM/iD HH')を書いてみました(瞬間( '2014-11-28 16:40:00'、 'YYYY-MD HH:mm:ss' :mm:ss '));何も得られていない –

+0

はい、それはあなたがバワーを使用することができますhttps://github.com/xsoh/moment-hijri –

+0

2014年11月28日16時40分のhijriの日付は何ですか?私はi2014/i11/i28を16:40:00持っていますか? –

3

を変換する強力なライブラリ瞬間-hijri.jsを使用することができます。日付オプションの調整の入力を許可するには、日付を渡しできるようにする必要がありますので、次のように変更します。に

function writeIslamicDate(date, adjustment) { 
    ... 
    var iDate = kuwaiticalendar(date, adjustment); 

function kuwaiticalendar(adjust) { 
    var today = new Date(); 

function writeIslamicDate(adjustment) { 
    ... 
    var iDate = kuwaiticalendar(adjustment); 

を:

function kuwaiticalendar(date, adjust) { 
    var today = date || new Date(); 

日付かどうか。以下は完全に変更されたコードです(ちょっと整理されています)。 toLocaleStringには、イスラムのカレンダーに変換するだけでなく、ホストのデフォルト言語を使用することもできます。あなたは、次のような何かをしたいのtoLocaleStringを使用して

// Returns mathematic mod, not javascript mod 
 
// e.g. gmod(-3, 2) returns 1, whereas -3%2 returns -1 
 
function gmod(n, m){ 
 
    return ((n % m) + m) % m; 
 
} 
 

 
/* @param {Date} date - optional, default is today 
 
** @param {number} adjust - optiona, days to adjust date by 
 
*/ 
 
function kuwaiticalendar(date, adjust) { 
 
    var today = date? new Date(+date) : new Date(); 
 
    if (adjust) { 
 
    today.setDate(today.getDate() + +adjust); 
 
    } 
 

 
    var day = today.getDate(); 
 
    var month = today.getMonth(); 
 
    var year = today.getFullYear(); 
 
    var m = month + 1; 
 
    var y = year; 
 

 
    if (m < 3) { 
 
     y -= 1; 
 
     m += 12; 
 
    } 
 

 
    var a = Math.floor(y/100); 
 
    var 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; 
 
    } 
 
    } 
 

 
    var 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); 
 
    } 
 

 
    var bb = jd+b+1524; 
 
    var cc = Math.floor((bb - 122.1)/365.25); 
 
    var dd = Math.floor(365.25 * cc); 
 
    var 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; 
 
    var wd = gmod(jd + 1, 7) + 1; 
 

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

 
    var shift1 = 8.01/60.; 
 

 
    var z = jd-epochastro; 
 
    var cyc = Math.floor(z/10631.); 
 
    z = z - 10631 * cyc; 
 
    var j = Math.floor((z - shift1)/iyear); 
 
    var iy = 30 * cyc + j; 
 
    z = z - Math.floor(j * iyear + shift1); 
 
    var im = Math.floor((z + 28.5001)/29.5); 
 

 
    if (im == 13) im = 12; 
 
    var id = z-Math.floor(29.5001*im-29); 
 

 
    return [ 
 
    day,  //calculated day (CE) 
 
    month - 1, //calculated month (CE) 
 
    year,  //calculated year (CE) 
 
    jd - 1, //julian day number 
 
    wd - 1, //weekday number 
 
    id,  //islamic date 
 
    im - 1, //islamic month 
 
    iy   //islamic year 
 
    ]; 
 
} 
 

 
function writeIslamicDate(date, adjustment) { 
 
    var wdNames = ["Ahad", "Ithnin", "Thulatha", "Arbaa", "Khams", "Jumuah", "Sabt"]; 
 
    var iMonthNames = ["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(date, adjustment); 
 
    var outputIslamicDate = wdNames[iDate[4]] + ", " + iDate[5] + " " + 
 
          iMonthNames[iDate[6]] + " " + iDate[7] + " AH"; 
 
    return outputIslamicDate; 
 
} 
 

 
// No date or adjust 
 
console.log(writeIslamicDate()); 
 
// No date, adjust to tomorrow 
 
console.log(writeIslamicDate(undefined, 1)); 
 
// Date for 1 Jan 2017 
 
console.log(writeIslamicDate(new Date(2017,0,1))); 
 
// Date for 1 Jan 2017, adjust by -1 day 
 
console.log(writeIslamicDate(new Date(2017,0,1), -1));

// date is optional, defaults to today 
 
function writeHijri(date, lang) { 
 
    var date = date || new Date(); 
 
    lang = lang || 'en'; 
 
    var options = { 
 
    year: 'numeric', month: 'long', day: 'numeric' 
 
    }; 
 
    return date.toLocaleString(lang + '-u-ca-islamic', options); 
 
} 
 

 
// Today in English 
 
console.log(writeHijri()); 
 

 
// 1 Jan 2017 converted to Hijri (3 Rab. II 1438) in Arabic 
 
console.log(writeHijri(new Date(2017,0,1), 'ar'));

関連する問題