1

2 つの日付の間の時間と、移動時間を日数と時間数 (四捨五入) で計算しようとしています。

dd:mm:yyフォーマットとブートストラップ(日付ピッカーを含む)からの4つの入力を使用しますhh:mm

マークアップ:

<input type="date" name="travel_begin_date" id="travel_begin_date" placeholder="Text input" class="span12">
<input type="time" name="travel_begin_time" id="travel_begin_time" placeholder="Text input" class="span12">
<input type="date" id="travel_end_date" name="travel_end_date" placeholder="Text input" class="span12">
<input type="time" for="travel_end_time" name="travel_end_time" placeholder="Text input" class="span12">

<div id="days_difference"></div>
<div id="hours_difference"></div> 

関数:

function calculateDifference() {
console.log('calculate difference start...');
var startDate = $("#travel_begin_date").val();
var startTime = $("#travel_begin_time").val();
var endDate = $("#travel_end_date").val();
var endTime = $("#travel_end_time").val();

var stDate = new Date(startDate);
var enDate = new Date(endDate);

var diff=enDate.getTime() - stDate.getTime();
var differenceDays = (diff) / (1000 * 60 * 60 * 24);
var differenceHours= ((diff) % (1000 * 60 * 60 * 24))/ (1000 * 60 * 60); 

document.getElementById('days_difference').innerHTML += differenceDays  + " days and";
document.getElementById('hours_difference').innerHTML += differenceHours  + " hours";

 }

問題は次のとおりです。hours_difference をどのように計算できますか。

例えば:

差 日付: 20.03.2013 時刻: 10:00 22.03.2013 時刻: 11:45 = 結果 2 日 2 時間 (四捨五入)?

簡単なコードやプラグインはありますか?

4

3 に答える 3

1

コメントに従って回答を更新し、デモを追加しました

<input type="time" id="travel_end_time" name="travel_end_time" placeholder="Text input" class="span12">

travel_end_time変更されたid の代わりに for があります

function calculateDifference() {
    console.log('calculate difference start...');
    var startDate = $("#travel_begin_date").val();
    var startTime =(''+ $("#travel_begin_time").val()).split(":"); // Used split 

    var endDate = $("#travel_end_date").val();
    var endTime = (''+ $("#travel_end_time").val()).split(":");// Used split 

    var stDate = new Date(startDate);
    stDate.setHours(parseInt(startTime[0]));// Set Hours 
    stDate.setMinutes(parseInt(startTime[1]));// Set Minutes 
    var enDate = new Date(endDate);
    enDate.setHours(parseInt(endTime[0]));// Set Hours 
    enDate.setMinutes(parseInt(endTime[1]));// Set Minutes


    var diff=enDate.getTime() - stDate.getTime();
    var differenceDays = (diff) / (1000 * 60 * 60 * 24);
    var differenceHours= ((diff) % (1000 * 60 * 60 * 24))/ (1000 * 60 * 60); 

    document.getElementById('days_difference').innerHTML += Math.round(differenceDays)   + " days and";
    document.getElementById('hours_difference').innerHTML += Math.round(differenceHours ) + " hours";

 }
于 2013-05-27T07:19:33.173 に答える
0

多分このようなものが必要ですか?

var DateDiff = {

    inDays: function(d1, d2) {
        var t2 = d2.getTime();
        var t1 = d1.getTime();

        return parseInt((t2-t1)/(24*3600*1000));
    },

    inWeeks: function(d1, d2) {
        var t2 = d2.getTime();
        var t1 = d1.getTime();

        return parseInt((t2-t1)/(24*3600*1000*7));
    },

    inMonths: function(d1, d2) {
        var d1Y = d1.getFullYear();
        var d2Y = d2.getFullYear();
        var d1M = d1.getMonth();
        var d2M = d2.getMonth();

        return (d2M+12*d2Y)-(d1M+12*d1Y);
    },

    inYears: function(d1, d2) {
        return d2.getFullYear()-d1.getFullYear();
    }
}

ここから取られたコード。この投稿を読むこともできます

于 2013-05-27T07:20:10.513 に答える
0
//
// Any source code blocks look like this
//
        t1="10/10/2006" ;

        t2="15/10/2006";


   //Total time for one day
        var one_day=1000*60*60*24; 
//Here we need to split the inputed dates to convert them into standard format
for furter execution
        var x=t1.split("/");     
        var y=t2.split("/");
  //date format(Fullyear,month,date) 

        var date1=new Date(x[2],(x[1]-1),x[0]);

        var date2=new Date(y[2],(y[1]-1),y[0])
        var month1=x[1]-1;
        var month2=y[1]-1;

        //Calculate difference between the two dates, and convert to days

        _Diff=Math.ceil((date2.getTime()-date1.getTime())/(one_day)); 
//_Diff gives the diffrence between the two dates.
于 2013-05-27T10:14:02.177 に答える