2016-07-27 21 views
1

datepickerからmoment.jsに変換する問題は、たまに多くなりました。残念ながら、私はここだけでなく、オンラインで見つけた様々な方法で提案された約10種類のソリューションを試してみたのですが、私は今でも私が望むようにdatepickerからmoment.jsに正常に変換できませんでした。日付文字列をdd-mm-yyからmoment.js有効な日付に変換する

jQueryのdatepickerで選択した日付を取得し、この場合はconsole.log最後に「27-7-2016」というように日付ピッカー日付を取得します。 gap変数で

$("#datepicker").datepicker({ 
    dateFormat: "dd-mm-yy", 
    maxDate: 6, 
    minDate: 0, 
    onSelect: function(dateText){ 
     startDate = dateText; 
     selectedTemp = dateText.split("-"); 
     gap = moment(selectedTemp[2]+"-"+selectedTemp[1]+"-"+selectedTemp[0]).fromNow();' 

     console.log(startDate); 
    } 
}); 

、私は「2日に」私に「10時間以内に」何かを与える瞬間オブジェクトを持っていますか。私は後で選択した日付があることを行っている何日に知って数値にその文字列を解析:

gap = parseInt(gap); 

私は例えば2日間で日付ピッカーから日付をインクリメントしたい、それが「から行くです27-私が見つけた2日間のギャップを使って「7-2016」から「29-7-2016」に変更しました。 これまでのところ、私はいつも瞬間を取っていました.jsオブジェクト、無効なエラー、または.add()メソッドなどは動作しません。

また、結果の29 -7-2016 "に変換して" 2016-7-29 "に変換しますが、文字列ではないため、その方法を見つけることができず、常に書式設定の問題にぶつかります。

ありがとうございました。

答えて

1

fromNow()メソッドは、モーメントオブジェクトではなく文字列を返します。現在と選択した日付との差を計算する場合は、diffを使用できます。

あなたはモーメントオブジェクトを持っていますが、addを使ってオブジェクトを変更できます。 addはモーメント元のオブジェクトを変更することに注意してください。

formatを使用すると、好みの形式でモーメントオブジェクトを表す文字列を取得できます。

希望は次の例では、瞬間を使用することができる方法を理解するのに役立つこと:

$("#datepicker").datepicker({ 
 
    dateFormat: "dd-mm-yy", 
 
    maxDate: 6, 
 
    minDate: 0, 
 
    onSelect: function(dateText){ 
 
    // Parse the selected string into moment object 
 
    var momDate = moment(dateText, 'DD-MM-YYYY'); 
 
    // Get gap string 
 
    // gap can be something like 'in 10 hours' 
 
    var gap = momDate.fromNow(); 
 
    // Get difference as integer 
 
    var gapInt = momDate.diff(moment().startOf('d'), 'd'); 
 
     
 
    // Here you can use add() to modify you moment object 
 
    momDate.add(gapInt, 'days'); 
 
     
 
    // Get date formatted as you like 
 
    var dateFormatted = momDate.format('YYYY-M-DD'); 
 
    console.log(dateFormatted); 
 
    } 
 
});
<link href="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.4/jquery-ui.css" rel="stylesheet"/> 
 

 
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.js"></script> 
 
<script src="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.4/jquery-ui.js"></script> 
 
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script> 
 

 
<input id="datepicker" type="text">

+0

ありがとう!これは本当に物事を明確にします。問題はfromNowがモーメントオブジェクトを作成していないという事実だと私は思う。 –

関連する問題