2016-11-21 17 views
0

予定時刻から予定時刻までの分数を表示します。時差の計算|文字列

これは比較対象ではありません。これは、スケジュールされた予定と予想された時間の異なる時間に何分あるかを計算することです。

両方の時刻が文字列として表示されるため、文字列を数値に変換してから比較する必要がありますか?

私が戻ってほしいのは、数字としての時間の違いです。ここで

は私の物である:

{ 
station: "Macclesfield", 
scheduled: "15:41", 
expected: "15:50", 
platform: "1" 
} 
+1

はい、Unixタイムスタンプに変換します。 –

+0

@Turnipそれはブール値を返します。私は比較する方法を知っています。私は比較した後に返された数の違いが必要です。 – Filth

+0

はい。しかし、あなたの問題の99%はそのスレッドの答えで解決できます。 – Turnip

答えて

1

var data = { 
 
    station: "Macclesfield", 
 
    scheduled: "15:41", 
 
    expected: "15:50", 
 
    platform: "1" 
 
} 
 

 
function getTimeDifference(scheduled, expected) { 
 
    scheduled = scheduled.split(':'); //get array [hours, minutes] 
 
    expected = expected.split(':'); 
 
    var hours = expected[0] - scheduled[0]; //difference in hours 
 
    var minutes = expected[1] - scheduled[1]; //difference in minutes 
 
    if (minutes < 0) { //if minutes are negative we know it wasn't a full hour so.. 
 
    hours--; //subtract an hour 
 
    minutes += 60; //add 60 minutes 
 
    } //now we're ok 
 
    if (hours) //if hours has a value 
 
    return hours + ':' + minutes; 
 
    return minutes; //hours is 0 so we only need the minutes 
 
} 
 

 
console.log(getTimeDifference(data.scheduled, data.expected)); 
 

 
data.expected = "16:00"; 
 

 
console.log(getTimeDifference(data.scheduled, data.expected)); 
 

 
data.expected = "17:00"; 
 

 
console.log(getTimeDifference(data.scheduled, data.expected));

+0

私は後に何をしたのですか - ありがとう@ギャビン。これについての考え方を説明していただけますか?私は間違いなく文字列を整数に変換し、そのように比較しなければならなかったようですね? – Filth

+1

'.split( ':')'は、最初のインデックスを時間、2番目を分とする配列を与えます。値を減算するだけです。分が負の場合、それは完全な時間ではないことを知っているので、1時間を引いて60分を追加して、正しい場所に移動させてください。 – Gavin

0
var obj = { scheduled: "15:41", expected: "15:50" } 
var milliSeconds = Date.parse(`01/01/2011 ${obj.expected}:00`) - Date.parse(`01/01/2011 ${obj.scheduled}:00`) 
var minutes = milliSeconds/(1000 * 60) 
var hours = milliSeconds/(1000 * 60 * 60) 
+0

日付の形式がISO 8601でない場合、 'Date.parse'は同じ文字列に対して異なる値を返すことができます... –

+0

@MikeMcCaughanええ、私はちょうど彼がいつも"時:分"の文字列。もっと広い/より良い答えを出すためにはより多くの情報が必要でしょう。 – kjonsson