2014-02-10 52 views
0

我有一個計算器可以計算兩個日期時間值之間的hourdiff。 我希望當選定的月份結束和新的月份開始計算從頭開始。 現在一切都OK了二月一個月,但如果有人想從3月份開始計算的,然後它計算28天而不是31 我的代碼:檢查月份是否通過datetimepicker

<script> 
    $(function() { 
     $('#frompicker').datetimepicker({ dateFormat: 'd/M/yy' }); 
     $('#topicker').datetimepicker({ dateFormat: 'd/M/yy' }); 
    }); 

<script> 
    $(document).ready(function() { 
     function calculateTime() { 

      //get values 

      var valuestart = $("#frompicker").val(); 
      var valuestop = $("#topicker").val(); 

      //alert(valuestart); 
      var timeStart = new Date(valuestart); 
      var timeEnd = new Date(valuestop); 

      var hourDiff = (timeEnd - timeStart)/3600000; 

       if (hourDiff < 0) { 
        $("p").html("<b>price:</b> " + "wrong data"); 

    else if (hourDiff > 24&& hourDiff <= 672) { //28days 
        $("p").html("<b>price:</b> " + "100.00" + "€"); 
       } 
    else if (hourDiff >= 672) { // 
        var hourDiffnew = hourDiff - 672; 

        var finalpricep61 = (hourDiffnew * 0.125) + 90; 
        var finalpricep62 = finalpricep61.toFixed(); 


        $("p").html("<b>price:</b> " + finalpricep62 + ".00€"); 

       } 

+0

難道你沒有硬編碼給你1-28天和28天以上的不同結果嗎? –

+0

是的,這必須改變,但由於日期時間格式我不能處理這個。我嘗試但沒有。 – Gunner

回答

0

考慮:

var valuestart = $("#frompicker").val(); 

是什麼VALU estart?一個字符串或時間值?如果它是一個字符串,則可能是以下將不會如預期在某些瀏覽器工作:

var timeStart = new Date(valuestart); 
var timeEnd = new Date(valuestop); 

假設這些日期對象有正確的值,即:

當選定月份結束,新的月份開始

if (timeStart.getMonth() != timeEnd.getMonth()) { 
    timeStart.setDate(1); 
    timeStart.setMonth(timeEnd.getMonth()); 
} 
012:計算從一開始就

手段從月初開始,然後開始

將設置timeStarttimeEnd的第一個月。但我可能誤解了這個問題。

+0

價值開始是一個日期時間值,如:10/Feb/2014 00:00(或02/10/2014 00:00)。我真的很感謝你的回答 – Gunner

+0

最後我想檢查例如:if(hourDiff> 312 && hourDiff <=「這個月的最後一天」){ $(「p」)。html(「price:」 +「100.00」+「€」);}。我如何聲明這個「月的最後一天」? – Gunner