2

I have two text-input-fields where users can enter a time in format "hh:mm". The main part looks like the following code:

    var time1 = new Date("01/01/2013 " + time1input);   
    var time2 = new Date("01/01/2013 " + time2input);
    var difference = new Date(time2 - time1);

The result is always 01:00 to high (e.g. 08:00 - 04:00 results in 05:00 which is obviously wrong :) ). Did i misunderstood something?

4

4 に答える 4

5

そのような日付を扱うことはできません。

代わりに次のことを試してください。

var time1input = "04:00";
var time2input = "08:00";

var time1 = new Date("01/01/2013 " + time1input);   
var time2 = new Date("01/01/2013 " + time2input);
var difference = time2.getTime() - time1.getTime();
console.log(difference / 60 / 60 / 1000); //<- whittle this down to hours

それは「4」をログアウトします。

時間で作業している場合は、http://momentjs.com/のようなものを使用してください。これにより、..

difference = moment(time2).diff(time1, 'hours'); //<- will return 4

フォーマット (hh:mm): (最初の例との違いを使用すると仮定)

var hours = Math.floor(difference / 60 / 60 / 1000);
var minutes = Math.round(difference / 60 / 1000) % 60;
var formattedString = (hours > 10 ? hours : "0" + hours) + ":" + (minutes > 10 ? minutes : "0" + minutes);

4 時間の差は "04:00" を返し、13 時間 30 分の差は 13:30 を返します。

于 2013-07-01T19:43:58.357 に答える
0

getTimeメソッドを見てください。これはうまくいくかもしれません:

var difference = new Date(time2.getTime() - time1.getTime());
于 2013-07-01T19:42:03.987 に答える
0

通常、時差を計算するとき。

以前はミリ秒に変換し、違いを見つけてフォーマットに戻していました。

この投稿を確認してください

于 2013-07-01T19:42:43.110 に答える
0

また:

var time1 = new Date("01/01/2013 " + time1input)
var time2 = new Date("01/01/2013 " + time2input)
var difference = time2 - time1

differenceはミリ秒単位の差なので、時間単位で差を得るには、次のようにします。

var time1 = new Date("01/01/2013 04:00")
var time2 = new Date("01/01/2013 08:00")
var difference = (time2 - time1)/1000/60/60
console.log(difference)
# => 4

Date オブジェクトを直接操作できることに注意してください。呼び出す必要はありません。.getTime()

ps同様の質問はずっと前にすでに回答されています

于 2013-07-01T19:51:50.967 に答える