2016-05-10 8 views
0

Может ли кто-нибудь сказать мне, как сделать разницу между двумя датами в backbonejs? Я пытаюсь сделать это так, на мой взгляд, но он предупреждает в NAN:Разница между двумя datepicker в Backbonejs

initialize: function() { 

this.model.on("change:auprov",function(){ 
         var datedeb = new Date(this.model.get("auprov")); 
         var dateret = new Date(this.model.get("deprov")); 
         var diff_ms = dateret.getTime() - datedeb.getTime(); 
         alert(diff_ms/1000/60/60/24); 
         //this.model.set({"dureeprov": '5'}); 
             },this); 
    }, 

Вот часть моей модели:

deprov:{ 
type: "DatePicker", 
title: "De (Prov.)", 
fieldAttrs:{ 
     className:'col-sm-2 deprov' 
    }, 
validators: ["required"] 
    }, 
auprov:{ 
type: "DatePicker", 
title: "Au (Prov.)", 
fieldAttrs:{ 
     className:'col-sm-2 auprov' 
    }, 
validators: ["required"] 
    }, 

С уважением

+0

Какова 'this.model.get ("auprov")' и 'this.model.get (" deprov ")'? –

ответ

0

К сожалению, я использовал французскую форму Datepicker, поэтому я должен был изменить его на английский один, здесь правильный код:

this.model.on("change:auprov",function(){ 
     var myDateArrayRet = this.model.get("auprov").split("/"); 
     var dateret = new Date(myDateArrayRet[2],myDateArrayRet[1]-1,myDateArrayRet[0]); 
     var myDateArray = this.model.get("deprov").split("/"); 
     var datedeb = new Date(myDateArray[2],myDateArray[1]-1,myDateArray[0]); 
     var diff_ms = dateret.getTime() - datedeb.getTime(); 
     alert(Math.ceil(diff_ms/(1000 * 3600 * 24))); 
     },this); 
+0

Является ли это решением вашей проблемы или обновлением до вопроса? –

+0

Это решение, позвольте мне объяснить: мой датпикер принимает французский формат (Дни/Месяцы/годы по месяцам/дням/годам), поэтому мне пришлось поменять данные, а затем использовать новую дату (..). С уважением – zackzulg

0

Пока я не могу знать наверняка содержание и типы this.model.get("auprov") и this.model.get("deprov") Я могу только предположить, что это числа. Javascript иногда обрабатывает числа как строки. Поэтому, чтобы исправить это, используйте parseInt для преобразования строки в число.

var datedeb = new Date(parseInt(this.model.get("auprov"))); 
var dateret = new Date(parseInt(this.model.get("deprov"))); 
+0

Спасибо @ Симо за ур ответ, я ошибся, я использовал французский формат датпикера, поэтому, когда я пытаюсь 26 июня 2016 года, он рассматривает 26 как месяц, и он дает неверную дату, я добавлю исправление моей проблемы. – zackzulg